抽象类
抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类可以包含抽象方法和非抽象方法。抽象方法是一种没有具体实现的方法,必须在子类中被实现。非抽象方法是一种有具体实现的方法,可以在子类中被重写或继承。
定义一个抽象类使用 abstract
关键字:
abstract class Animal {
abstract public function makeSound();
}
在上面的示例中,我们定义了一个抽象类 Animal
,它包含一个抽象方法 makeSound()
。由于这是一个抽象方法,因此我们没有提供具体的实现。
我们可以在子类中实现这个抽象方法:
代码语言:javascript复制class Dog extends Animal {
public function makeSound() {
echo "Woof! Woof!";
}
}
在上面的示例中,我们定义了一个子类 Dog
,它继承了 Animal
抽象类,并实现了 makeSound()
方法。
抽象类还可以包含非抽象方法:
代码语言:javascript复制abstract class Animal {
abstract public function makeSound();
public function eat() {
echo "I am eating";
}
}
在上面的示例中,我们添加了一个非抽象方法 eat()
。
抽象类的作用是为子类提供一个通用的模板。我们可以在抽象类中定义一些通用的属性和方法,让子类来实现具体的细节。抽象类也可以限制子类的实现方式,从而确保程序的正确性和安全性。