记录我对抽象类的误解 浏览次数:377 日期:2020-08-20 13:23:08 ### 定义 用`abstract`关键字声明的类叫抽象类,如下代码: ```php abstract class Person { } ``` ### 特点 - 抽象的类不能被直接实例化,仅允许通过继承来实例化。值得注意的是:尽管抽象类不能实例化,但仍然可以声明构造函数。 - 类中只要有方法被声明为abstract抽象方法,那么这个类就必须声明为抽象类。 - 抽象方法只允许有方法声明与参数列表,不允许有方法体,即不能定义其具体的实现 ```php abstract class Person//有抽象方法的类被声明为抽象类 { abstract function say();//抽象方法没有方法体 public function execute() { $this->say(); } } ``` **注意:类中若存在抽象方法,那么类就必须被定义成抽象类,但是抽象类中可以没有抽象方法,虽然没有抽象方法,但是类仍然不能被直接实例化**。曾经我一直以为抽象类中至少需要一个抽象方法,但是通过读开源代码,无意间发现抽象类里面竟然没有抽象方法,于是查阅了下资料,结合自己写验证代码,证时了抽象类里面可以没有抽象方法,为此记录之。**抽象类里面可以没有抽象方法** ```php abstract class Person { public function say() { //do something } public function execute() { //.... } } ``` 最后更新时间为: 7个月前 (2020-08-20 13:23:08)