批改状态:合格
老师批语:
自己定义一个接口和抽象类,并实现它,对比接口与抽象类的区别与联系,并实例演示
static三种用途
class Test{public static function demo1():string{return '父类'.__METHOD__;}public static function demo2():string{//self 永远和父类绑定,不能动态的识别或设置静态成员的调用者// return self::demo1();//static 可以识别静态成员的调用者,子类重写了demo1则调用子类的demo1//使用static代替self 。static用在动态的执行阶段,self用在静态的编译阶段return static::demo1();}}//子类class Sub extends Test{//只要是父类中的public ,protected 声明的成员,子类都可以使用//子类中重写父类的静态方法public static function demo1():string{return '子类'.__METHOD__;}}//这就是静态继承上下文//子类可以调用父类的静态成员echo Sub::demo2();
interface 声明,接口只允许声明两类成员:类常量,公共抽象方法(没有实现过程)。
接口使用必须创建一个实现类。
实现类必须将接口中声明的抽象方法全部实现。
interface iGood{//类常量const DEMO='举例';//抽象方法public function demo1(...$test):string;}//实现类实现接口class Good implements iGood{public function demo1(...$test):string{return print_r($test,true);}}$good=new Good();echo $good->demo1('你好!');
抽象类必须通过它的子类才可以使用,子类必须将抽象类的抽象方法实现,实现类:实现了接口和抽象类的抽象方法的 工作类
abstract 声明抽象类
抽象类不一定有抽象方法,但有抽象方法的一定是抽象类。
abstract class Model{//抽象方法abstract public function __construct();}class UserModel extends Model{public function __construct(){}}
注意:接口不是类。
抽象类可以有属性、普通方法、抽象方法,但接口不能有属性、普通方法、可以有常量.
抽象类内未必有抽象方法,但接口内一定会有“抽象”方法
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号