摘要:一抽象方法和抽象類抽象方法一個方法如果沒有方法體沒有,直接分號結(jié)束,使用關(guān)鍵字修飾的方法,即是抽象方法抽象類如果類中有一個方法是抽象方法,則這個類是抽象類,該類使用來修飾注意抽象類中不一定必須有方法抽象類中有抽象方法抽象類不能創(chuàng)建對象其他方
一、抽象方法和抽象類
1.抽象方法:一個方法如果沒有方法體(沒有{},直接分號結(jié)束,使用abstrract關(guān)鍵字修飾的方法),即是抽象方法
2.抽象類:如果類中有一個方法是抽象方法,則這個類是抽象類,該類使用abstract來修飾
注意:
1.抽象類中不一定必須有方法 2.抽象類中有抽象方法 3.抽象類不能創(chuàng)建對象 4.其他方面與一般類完全一樣 5.抽象類必須有子類,子類將抽象類的抽象方法覆蓋,就有方法體了 6.子類必須覆蓋全部抽象方法,才能創(chuàng)建對象,如果只實現(xiàn)部分抽象方法,則子類還是抽象類
3.抽象方法的作用:規(guī)定了子類必須有(覆蓋)這個方法,具體功能交給子類(按自己的功能)實現(xiàn)
4.抽象類的作用:抽象類要求了子類的結(jié)構(gòu),就是一個規(guī)范(程序員不能不寫某種方法)
abstract class Person { abstract function eat(); abstract function sleep(); function walk(){} }; class Men extends Person { function eat(){ echo "吃米飯
"; } function sleep(){ echo "睡床
"; } }; class Women extends Person { function eat(){ echo "吃面
"; } function sleep(){ echo "睡床
"; } }; $s=new Men; $s->eat();//吃米飯
二、面向?qū)ο蟮慕涌诩夹g(shù)
1.接口是一種特殊的抽象類(有抽象類所有特性)
2.接口與一般抽象類的區(qū)別(接口也是一種規(guī)范)
a.接口內(nèi)所有方法必須全是抽象方法 b.接口中屬性必須是常量(const聲明) c.接口內(nèi)權(quán)限必須是public(默認即是,不必聲明),抽象類可以有protected d.聲明接口不使用class,而是interface e.接口中的抽象方法不需要abstract特殊聲明,因為都是 f.可以用類::訪問屬性/方法
interface Demo { const NAME="wo"; function test(); }
3.接口的特性
a.接口可以繼承另一個接口(extends),但只有擴展關(guān)系,沒有覆蓋關(guān)系 b.可以使用一般類實現(xiàn)接口的*全部方法*(抽象方法必須全部覆蓋),即有覆蓋關(guān)系 c.可以使用抽象類來實現(xiàn)接口的*部分方法*,即有覆蓋關(guān)系 d.只要是覆蓋關(guān)系,即使用類/抽象類來實現(xiàn)接口,就要用implements關(guān)鍵字 e.extends:一個類只能有一個父類 f.implements:可以在使用extends繼承其他類的同時,進行對接口的實現(xiàn),可以實現(xiàn)多個接口(一定要先extends,再implements) g.實現(xiàn)多個接口,以逗號分開多個接口名即可
interface Demo { const NAME="wo"; function test1(); function test2(); }; interface Test extends Demo { function test3(); }; class World { function test4(){ } }; interface Abc { function test5(); } class Fina extends World implements Test,Abc { function test1(){ echo "test1
"; } function test2(){ echo "test2
"; } function test3(){ echo "test3
"; } function test4(){ echo "test4
"; } function test5(){ echo "test5
"; } }; $p=new Fina; $p->test1();//test1 $p->test2();//test2 $p->test3();//test3 $p->test4();//test4 $p->test5();//test5
三、多態(tài)性(各個子類的形態(tài)功能不同)
1.必須有繼承關(guān)系,父類最好是接口或抽象類,如下為模擬USB接口下鼠標(biāo)和鍵盤的多態(tài),以及使用者進行調(diào)用的情況
interface USB { const WIDTH = 12; const HEIGHT = 3; function load(); function run(); function stop(); }; class Mouse implements USB { function load(){ echo "加載鼠標(biāo)成功!
"; } function run(){ echo "運行鼠標(biāo)功能!
"; } function stop(){ echo "鼠標(biāo)工作結(jié)束!
"; } }; class Keyboard implements USB { function load(){ echo "加載鍵盤成功!
"; } function run(){ echo "運行鍵盤功能!
"; } function stop(){ echo "鍵盤工作結(jié)束!
"; } }; class Computer { //只要是繼承自USB抽象類的對象,不論什么設(shè)備,都執(zhí)行三個方法 function useUSB(USB $usb){ $usb->load(); $usb->run(); $usb->stop(); } }; class Workers { function work(){ $c=new Computer; $m=new Mouse; $k=new Keyboard; $c->useUSB($m); $c->useUSB($k); } }; $w=new Workers; $w->work(); //加載鼠標(biāo)成功! //運行鼠標(biāo)功能! //鼠標(biāo)工作結(jié)束! //加載鍵盤成功! //運行鍵盤功能! //鍵盤工作結(jié)束!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/25589.html
摘要:多態(tài)性面向?qū)ο笕筇匦苑庋b繼承多態(tài)。面向?qū)ο蠖鄳B(tài)性存在的三個必要條件繼承重寫父類引用指向子類對象多態(tài)性的實現(xiàn)方式重寫與重載靜態(tài)多態(tài)性方法重載方法重載允許類具有多個相同名稱的方法,但是方法參數(shù)列表不同。 多態(tài)性 面向?qū)ο螅∣OP)三大特性:封裝、繼承、多態(tài)。 多態(tài)性(polymorphism)指同一行為具有多種不同表現(xiàn)形式,在面向?qū)ο蟪绦蛟O(shè)計中表現(xiàn)為同一消息可以根據(jù)發(fā)送對象的類型不同,做...
摘要:封裝是面向?qū)ο蟮奶卣髦?,是對象和類概念的主要特性。通過這種方式,對象對內(nèi)部數(shù)據(jù)提供了不同級別的保護,以防止程序中無關(guān)的部分意外的改變或錯誤的使用了對象的私有部分。構(gòu)造函數(shù)通常被用來自動執(zhí)行很多初始化操作。 之前的相關(guān)問題 面向?qū)ο蠛兔嫦蜻^程的差別,各自的優(yōu)缺點 面向?qū)ο笥心男┗咎匦??各自特性帶來哪些好?面向?qū)ο蟮幕菊Z法? 面向?qū)ο蟮幕咎匦缘幕緦崿F(xiàn) 面向?qū)ο蠼Y(jié)合各種設(shè)計模式...
小編寫這篇文章的主要目的,主要是來給大家介紹關(guān)于Python的一些事情,主要還是涉及到面對面對象編程的一些實例,其中,主要涉及到的內(nèi)容涵蓋封裝、繼承、多態(tài)等多種形式,就具體的形式,下面就給大家詳細解答下?! ython是一門面向?qū)ο蟮恼Z言。面向?qū)ο蠖加腥筇匦裕悍庋b、繼承、多態(tài)。 下面分別來說說這三大特性: 1、封裝 隱藏對象的屬性和實現(xiàn)細節(jié),僅對外提供公共訪問方式。在python中用...
摘要:實現(xiàn)多態(tài)的三個必要條件繼承在多態(tài)中必須存在有繼承關(guān)系的子類和父類。參考面試題解惑系列九繼承多態(tài)重載和重寫面向?qū)ο笕筇匦苑庋b,繼承,多態(tài)以及抽象接口的介紹 版權(quán)聲明:本文由吳仙杰創(chuàng)作整理,轉(zhuǎn)載請注明出處:https://segmentfault.com/a/1190000009141566 1. 面向?qū)ο缶幊痰娜筇匦?Java 面向?qū)ο缶幊逃腥筇匦裕悍庋b、繼承、多態(tài)。 1.1 封裝...
閱讀 1717·2023-04-26 01:02
閱讀 4881·2021-11-24 09:39
閱讀 1817·2019-08-30 15:44
閱讀 2901·2019-08-30 11:10
閱讀 1795·2019-08-30 10:49
閱讀 993·2019-08-29 17:06
閱讀 619·2019-08-29 16:15
閱讀 910·2019-08-29 15:17