PHP面向对象之抽象类通俗易懂详解
时间: 2023-07-07 07:30:36 浏览: 141
抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类中可以包含抽象方法和非抽象方法,抽象方法必须在子类中被实现,而非抽象方法可以被子类直接继承或重写。
抽象类通常用于建立子类的模板,它定义了子类需要实现的方法和属性,但是并不对具体的实现进行定义。子类必须实现抽象类中的所有抽象方法,否则子类也必须声明为抽象类。这种方式可以保证子类的一致性,并且减少了代码的重复。
在 PHP 中,我们可以通过关键字 abstract 来定义一个抽象类,而抽象方法则需要在方法名前面加上 abstract 关键字,同时省略方法体。例如:
```
abstract class Animal {
abstract public function eat();
}
```
上面的代码定义了一个抽象类 Animal,其中包含一个抽象方法 eat()。由于这个方法是抽象的,所以不能有具体的实现。
当一个类继承了抽象类 Animal,并且没有实现 eat() 方法时,PHP 就会发出一个 Fatal error 错误。例如:
```
class Cat extends Animal {
}
```
上面的代码会报错,因为 Cat 没有实现抽象方法 eat()。
如果我们要让 Cat 继承 Animal,就必须实现 eat() 方法,例如:
```
class Cat extends Animal {
public function eat() {
echo "Cat is eating...\n";
}
}
```
这样,Cat 就可以实例化了,并且可以调用 eat() 方法。
总之,抽象类是一种用于建立子类模板的特殊类,它定义了子类需要实现的方法和属性。子类必须实现抽象类中的所有抽象方法,否则子类也必须声明为抽象类。
阅读全文