継承は、オブジェクト指向プログラミングの重要なメカニズムです。 1つのクラスが別のクラスに基づいて新しいクラスを作成できるようになり、サブクラスは親クラスのプロパティと方法を継承し、それによってコードの再利用と拡張を実装できます。 PHPでは、キーワード拡張はサブクラスを作成するために使用され、親::は親クラスのメンバーメソッドまたはプロパティを呼び出すために使用されます。
class Animal {
protected $name;
protected $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function getInfo() {
return "Name: " . $this->name . ", Age: " . $this->age;
}
}
class Dog extends Animal {
public function bark() {
return "Woof!";
}
}
$dog = new Dog("Rex", 3);
echo $dog->getInfo(); // 出力 "Name: Rex, Age: 3"
echo $dog->bark(); // 出力 "Woof!"
上記のコードは、情報を取得するための名前と年齢の属性と方法を備えた動物の基本クラスの動物を示しています。サブクラス犬はこれらの特性と方法を継承し、継承の基本的な使用法を反映してBark()メソッドを追加します。
多型とは、異なる種類のオブジェクトで異なる動作を示す同じインターフェイスまたは方法を指します。 PHPでは、多型は主にインターフェイスと抽象クラスを通じて実装されています。インターフェイスはメソッド仕様を定義し、抽象クラスは部分的な実装を提供し、サブクラスは抽象的なメソッドを詳細に実装する必要があります。これにより、コードがより柔軟でスケーラブルになります。
interface Shape {
public function area();
public function perimeter();
}
class Rectangle implements Shape {
private $length;
private $width;
public function __construct($length, $width) {
$this->length = $length;
$this->width = $width;
}
public function area() {
return $this->length * $this->width;
}
public function perimeter() {
return 2 * ($this->length + $this->width);
}
}
class Circle implements Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function area() {
return pi() * pow($this->radius, 2);
}
public function perimeter() {
return 2 * pi() * $this->radius;
}
}
$rectangle = new Rectangle(5, 3);
$circle = new Circle(2);
echo $rectangle->area(); // 出力 15
echo $rectangle->perimeter(); // 出力 16
echo $circle->area(); // 出力 12.566370614359
echo $circle->perimeter(); // 出力 12.566370614359
この例では、長方形と円の両方の形状インターフェイスを実装し、領域()とperimeter()メソッドを定義する必要があります。実装が異なると、同じ方法が異なる動作を実現します。これは多型の現れです。
継承と多型は、PHPオブジェクト指向プログラミングの基礎です。これら2つをマスターすると、コードの組織と再利用性が大幅に向上する可能性があります。継承により、サブクラスが親クラスのプロパティとメソッドを取得して、コードの重複を避けることができます。多型により、同じ方法がインターフェイスまたは抽象クラスを介してさまざまなオブジェクトで多様な動作を示すことができ、それによりコードの柔軟性が向上します。この記事で提供されているサンプルコードは、初心者がこれらの概念を理解し、高品質のPHPプログラムの開発に役立つのに適しています。