オブジェクト指向プログラミングでは、継承はコードの再利用と拡張のための中心的なメカニズムです。継承により、サブクラスは同じロジックを書き直すことなく、親クラスの既存のプロパティとメソッドを直接使用できるため、コード構造がより簡潔かつ効率的になります。
class Person {
protected $name;
protected $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function getName() {
return $this->name;
}
public function getAge() {
return $this->age;
}
}
class Student extends Person {
private $school;
public function __construct($name, $age, $school) {
parent::__construct($name, $age);
$this->school = $school;
}
public function getSchool() {
return $this->school;
}
}
$student = new Student("John Doe", 20, "Harvard University");
echo $student->getName(); // John Doe
echo $student->getAge(); // 20
echo $student->getSchool(); // Harvard University上記の例では、親クラスとしての Person クラスは基本的なプロパティとメソッドを提供し、Student クラスは継承を通じて親クラスの機能を拡張し、新しい属性$schoolを追加します。このように、サブクラスは親クラスのロジックを再利用するだけでなく、サブクラス自身の動作を柔軟に拡張することもできます。
ポリモーフィズムにより、異なるクラスが同じメソッド インターフェイスを異なる方法で実装できるようになり、プログラムの柔軟性と拡張性が高まります。 PHP では、ポリモーフィズムは通常、メソッド オーバーライド (Override) を通じて実装されます。
class Animal {
protected $name;
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
public function speak() {
echo "Animal speaks.";
}
}
class Cat extends Animal {
public function speak() {
echo "Meow!";
}
}
class Dog extends Animal {
public function speak() {
echo "Woof!";
}
}
$animals = [new Cat("Kitty"), new Dog("Buddy")];
foreach ($animals as $animal) {
echo $animal->getName() . ": ";
$animal->speak();
echo "<br>";
}上の例は、実際のポリモーフィズムを示しています。 Cat クラスと Dog クラスはどちらも Animal から継承していますが、それぞれspeech()メソッドをオーバーライドします。このメソッドが呼び出されると、実際のオブジェクトの種類に基づいて異なる結果が出力されるため、ポリモーフィズムの柔軟性が反映されます。
実際のプロジェクトでは、継承とポリモーフィズムによってコードの保守性とスケーラビリティが大幅に向上します。一般的なアプリケーション シナリオには次のようなものがあります。
継承とポリモーフィズムは、PHP オブジェクト指向プログラミングの重要なサポート ポイントです。継承によりコードをモジュール化して再利用できるようになり、ポリモーフィズムによりプログラムに柔軟な拡張機能を持たせることができます。これら 2 つの機能を理解して習得することは、開発者がより読みやすく、保守しやすく、スケーラブルなアプリケーションを構築するのに役立ちます。