抽象类和接口都是用来定义规范和约束的,但它们有一些不同之处。
抽象类:
接口:
使用抽象类:
abstract class Animal {
protected $name;
public function __construct($name) {
$this->name = $name;
}
abstract public function makeSound();
}
class Dog extends Animal {
public function makeSound() {
echo "Woof!";
}
}
$dog = new Dog("Dog");
$dog->makeSound();
使用接口:
interface Animal {
public function makeSound();
}
class Dog implements Animal {
public function makeSound() {
echo "Woof!";
}
}
$dog = new Dog();
$dog->makeSound();
抽象类和接口的选择取决于你的具体需求。如果你需要为类提供一些通用的实现,同时也要求子类必须实现某些方法,那么使用抽象类比较合适。如果你只需要定义一组方法,并且这些方法在不同的类中可能有不同的实现,那么使用接口比较合适。