MS-面向对象
2019-01-03 本文已影响6人
Captain_tu
-
finall
- final关键字可以加在类或者类中方法之前,但是不能使用final标识成员属性
- 使用final标识的类,不能被继承
- 在类中使用final标识的成员方法,在子类中不能覆盖
-
static
-
static关键字将类中的成员属性或者成员方法标识为静态的,static标识的成员属性属于整个类,static成员总是唯一存在的,被类的全部对象实例共享
class obj { static $counter = 0; function __construct() { self::$counter ++; } } $a = new obj; $b = new obj; $c = new obj; echo obj::$counter; //结果为3
-
-
抽象abstract
- 抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类
- 抽象类不能被直接实例化。
- 抽象类可以有非抽象的方法。
- 如果子类需要实例化,前提是它实现了抽象类中的所有抽象方法。如果子类没有全部实现抽象类中的所有抽象方法,那么该子类也是一个抽象类
- 如果子类实现了抽象方法,那么子类中抽象方法的访问控制不能比父类中的抽象方法访问控制更严格,public < protected < private
-
接口interface
- 接口是通过关键字interface定义
- 接口中只能定义常量const,不能定义成员属性
- 接口中的方法均没有方法体,且访问控制符必须是public
- 子类可以通过implements 实现接口,多个接口用","隔开
- 子类必须实现所有implements的接口的所有方法