在PHP中,抽象類的方法不一定要求是抽象的。抽象類的主要目的是為了定義一個基本的接口和一些通用的方法,這些方法可以被其他類繼承和實(shí)現(xiàn)。抽象類可以包含抽象方法和非抽象方法。
抽象方法是那些沒有具體實(shí)現(xiàn)的方法,它們在抽象類中的定義以分號(;)結(jié)尾,并且以關(guān)鍵字abstract開頭。子類必須實(shí)現(xiàn)這些抽象方法,否則它們也必須被聲明為抽象類。
非抽象方法是在抽象類中具有具體實(shí)現(xiàn)的方法。子類可以選擇性地覆蓋這些方法以實(shí)現(xiàn)自己的功能。
這里有一個簡單的例子來說明這個概念:
abstract class Animal {
// 抽象方法
abstract protected function makeSound();
// 非抽象方法
public function getName() {
return $this->name;
}
}
class Dog extends Animal {
// 實(shí)現(xiàn)抽象方法
protected function makeSound() {
return "Woof!";
}
// 可以選擇性地覆蓋非抽象方法
public function getName() {
return "Buddy";
}
}
在這個例子中,Animal
是一個抽象類,它包含一個抽象方法 makeSound()
和一個非抽象方法 getName()
。Dog
類繼承了 Animal
類,并實(shí)現(xiàn)了 makeSound()
方法。同時,它可以選擇性地覆蓋了 getName()
方法。