
批改狀態(tài):合格
老師批語:
自己定義一個接口和抽象類,并實現(xiàn)它,對比接口與抽象類的區(qū)別與聯(lián)系,并實例演示
static三種用途
class Test
{
public static function demo1():string
{
return '父類'.__METHOD__;
}
public static function demo2():string
{
//self 永遠(yuǎn)和父類綁定,不能動態(tài)的識別或設(shè)置靜態(tài)成員的調(diào)用者
// return self::demo1();
//static 可以識別靜態(tài)成員的調(diào)用者,子類重寫了demo1則調(diào)用子類的demo1
//使用static代替self 。static用在動態(tài)的執(zhí)行階段,self用在靜態(tài)的編譯階段
return static::demo1();
}
}
//子類
class Sub extends Test
{
//只要是父類中的public ,protected 聲明的成員,子類都可以使用
//子類中重寫父類的靜態(tài)方法
public static function demo1():string
{
return '子類'.__METHOD__;
}
}
//這就是靜態(tài)繼承上下文
//子類可以調(diào)用父類的靜態(tài)成員
echo Sub::demo2();
interface 聲明,接口只允許聲明兩類成員:類常量,公共抽象方法(沒有實現(xiàn)過程)。
接口使用必須創(chuàng)建一個實現(xiàn)類。
實現(xiàn)類必須將接口中聲明的抽象方法全部實現(xiàn)。
interface iGood
{
//類常量
const DEMO='舉例';
//抽象方法
public function demo1(...$test):string;
}
//實現(xiàn)類實現(xiàn)接口
class Good implements iGood
{
public function demo1(...$test):string
{
return print_r($test,true);
}
}
$good=new Good();
echo $good->demo1('你好!');
抽象類必須通過它的子類才可以使用,子類必須將抽象類的抽象方法實現(xiàn),實現(xiàn)類:實現(xiàn)了接口和抽象類的抽象方法的 工作類
abstract 聲明抽象類
抽象類不一定有抽象方法,但有抽象方法的一定是抽象類。
abstract class Model
{
//抽象方法
abstract public function __construct();
}
class UserModel extends Model
{
public function __construct(){
}
}
注意:接口不是類。
抽象類可以有屬性、普通方法、抽象方法,但接口不能有屬性、普通方法、可以有常量.
抽象類內(nèi)未必有抽象方法,但接口內(nèi)一定會有“抽象”方法
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號