💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 抽象类(Abstract Classes) 抽象类要点: * 抽象类不能被实例化,抽象类通过 `abstract` 关键字来定义; * 如果类里面有方法是被声明为抽象的,那么这个类就必须被声明为抽象的; * 定义为抽象的方法只能声明其调用方式,不能定义其具体的功能实现; 继承抽象类要点: * 子类必须定义父类中的所有抽象方法; * 并且这些方法的访问控制必须和父类中一样或者更为宽松; * 并且方法的调用方式必须和父类匹配,即参数类型和数量必须一致; ``` <?php abstract class AbstractClass { // 抽象方法 abstract protected function getName(); abstract protected function prefixName($prefix); // 普通方法 public function printOut() { echo $this->getName() . PHP_EOL; } } class MyClass1 extends AbstractClass { protected function getName() { return "MyClass1"; } public function prefixName($prefix) { return "{$prefix}MyClass1"; } } $obj = new MyClass1(); $obj->printOut(); echo $obj->prefixName('Foo_') . PHP_EOL; class MyClass2 extends AbstractClass { protected function getName() { return "MyClass2"; } public function prefixName($prefix, $toUpper=true) { if ($toUpper){ return strtoupper("{$prefix}MyClass2"); } else { return "{$prefix}MyClass2"; } } } $obj = new MyClass2(); $obj->printOut(); echo $obj->prefixName('Foo_') . PHP_EOL; ?> ```