php中abstract和interface有什么区别
在PHP中,abstract和interface是两种不同的概念和用法。
abstract(抽象类):
抽象类是用于继承的类,不能被实例化。
抽象类可以包含抽象方法和非抽象方法。
抽象方法是没有具体实现的方法,只有方法的声明。
子类继承抽象类后,必须实现抽象类中的所有抽象方法。
抽象类可以包含属性、常量和非抽象方法的具体实现。
示例代码:
abstract class Animal {
protected $name;
abstract public function sound();
public function setName($name) {
$this->name = $name;
}
}
class Cat extends Animal {
public function sound() {
return 'Meow';
}
}
$cat = new Cat();
$cat->setName('Kitty');
echo $cat->sound(); // Output: Meow
interface(接口):
接口是一种约定,用于定义类应该实现的方法。
接口中只能包含抽象方法和常量,不能包含属性和方法的具体实现。
类实现接口后,必须实现接口中定义的所有方法。
一个类可以实现多个接口。
示例代码:
interface Animal {
public function sound();
}
interface Pet {
public function getName();
}
class Cat implements Animal, Pet {
public function sound() {
return 'Meow';
}
public function getName() {
return 'Kitty';
}
}
$cat = new Cat();
echo $cat->sound(); // Output: Meow
echo $cat->getName(); // Output: Kitty
综上所述,abstract是用于类的继承和实现的,可以包含具体的方法实现和属性,而interface是用于定义类应该实现的方法,只能包含抽象方法和常量。
阅读剩余
THE END