面向?qū)ο螅?/h4>
題:
寫出php類權(quán)限修飾符徙歼;
延伸考點:
1. 面向?qū)ο蟮姆庋b、繼承悔据、多態(tài);
2. 魔術(shù)方法俗壹、
3. 設(shè)計模式科汗、
類修飾符:public , protected, private;
修飾符訪問權(quán)限:
封裝:成員訪問權(quán)限;
繼承:extends
單一繼承特性绷雏,同時只能繼承一個父類头滔,可以實現(xiàn)一個接口怖亭。
- 方法重寫 : 如果子類中的方法名和父類中的方法名相同的話,子類中的方法會把父類中的方法覆蓋掉
如果想要延伸父類中的方法坤检,可以在子類方法中使用parent::方法名
來實現(xiàn)兴猩;
多態(tài):
- 抽象方法:在類中,沒有方法體的方法就是抽象方法早歇。
// 如果沒有顯示地指定可見性倾芝,則默認為public
abstract 可見性 function 方法名稱(參數(shù)1,.....);
如:
public function hello($args);
// 修飾符abstract,也可以省略
abstract function work();
- 抽象類
abstract class 類名{
屬性;
方法;
抽象方法;
}
抽象類的特點:
- 抽象類不能實例化箭跳,只能被繼承晨另。
- 抽象類不一定有抽象方法,有抽象方法的類谱姓,一定是抽象類借尿。
- 抽象方法的可見性不能是private
- 抽象方法在子類中,需要重寫屉来。
什么時候需要用抽象類路翻?
- 有個方法,方法體不知如何寫茄靠,子類中還必須有這個方法時茂契,封裝成抽象方法,類為抽象類嘹黔。
- 控制子類中必須封裝某些方法時账嚎,可以用抽象方法。
- 當需要控制類只能被繼承儡蔓,不能被實例化時郭蕉。
接口的定義:如果一個類中,所有的方法都是抽象方法喂江,且沒有成員屬性召锈,則這個類被稱為接口(interface)。
interface Common{
abstract function work();
abstract function test($args);
}
- 接口的作用:雖然PHP的類是單繼承获询,但可以通過接口來實現(xiàn)多繼承涨岁。
- 接口的繼承(extends):
接口繼承接口 interface 接口名稱 extends 父接口名稱
注意:類的繼承是單繼承(只能有一個父類),但接口的繼承卻是多繼承吉嚣,類對接口的實現(xiàn)也是多實現(xiàn)梢薪。
-
接口的實現(xiàn)(implements):
類實現(xiàn)接口class 類名 implements 接口名稱1,接口名稱2,...
繼承類同時實現(xiàn)接口:
類繼承父類同時實現(xiàn)接口
class 類名 extends 父類名 implements 接口名稱{
//TODO
}
抽象類和接口的區(qū)別:
- 接口是一種特殊的抽象類,接口中只包含抽象方法尝哆,沒有成員屬性秉撇。
- 類實現(xiàn)(implements)接口時,必須完全實現(xiàn)接口中的所有方法; 類繼承(extends)抽象類時琐馆,只需對需要用到的抽象方法進行重寫规阀。
- 抽象類只能單繼承,但接口卻是多繼承瘦麸,類對接口的實現(xiàn)也是多實現(xiàn)谁撼。