Heim  >  Artikel  >  Backend-Entwicklung  >  Verwendung von Vererbung, Polymorphismus und Schnittstellen in PHP

Verwendung von Vererbung, Polymorphismus und Schnittstellen in PHP

王林
王林Original
2023-06-23 11:49:551318Durchsuche

PHP ist eine Open-Source-Skriptsprache für die serverseitige Programmierung und hat sich zu einer der beliebtesten und am weitesten verbreiteten Programmiersprachen der Welt entwickelt. In PHP sind Vererbung, Polymorphismus und Schnittstellen drei wichtige objektorientierte Programmierkonzepte, die Entwicklern große Vorteile bei der Wiederverwendung, Flexibilität und Wartbarkeit von Code ermöglichen. Dieser Artikel befasst sich mit diesen drei Konzepten und stellt vor, wie man sie in PHP verwendet.

  1. Vererbung

Vererbung ist eines der grundlegendsten Konzepte in der objektorientierten Programmierung. Das bedeutet, dass eine Klasse die Eigenschaften und Methoden einer anderen Klasse erben und auf dieser Basis benutzerdefinierte Eigenschaften und Methoden hinzufügen kann. Die Unterklassenbildung wird durch die Erweiterung einer übergeordneten Klasse (auch Superklasse oder Basisklasse genannt) erreicht, wodurch die Unterklasse den Code und die Funktionalität der übergeordneten Klasse wiederverwenden kann.

In PHP erfolgt die Vererbung über das Schlüsselwort „extends“. Der folgende Code ist beispielsweise eine einfache Vererbungsimplementierung:

class Person {
  // 定义一个方法
  public function sayHello() {
    echo "Hello, world!";
  }
}

class Student extends Person {
  // 定义一个新的方法
  public function sayGoodbye() {
    echo "Goodbye, world!";
  }
}

// 使用子类的对象
$student = new Student();
$student->sayHello();  // 输出 “Hello, world!”
$student->sayGoodbye();  // 输出 “Goodbye, world!”

In diesem Beispiel definieren wir eine Klasse namens Person und eine Methode namens sayHello() darin. Anschließend haben wir eine Unterklasse namens „Student“ erstellt und diese mithilfe des Schlüsselworts „extends“ auf die Klasse „Person“ erweitert. In der Unterklasse haben wir eine neue Methode namens sayGoodbye() hinzugefügt. Schließlich erstellen wir eine Instanz der Student-Klasse mit dem Namen $student und rufen deren Methoden auf.

Es ist zu beachten, dass eine Unterklasse, wenn sie eine übergeordnete Klasse erbt, nicht nur deren Eigenschaften und Methoden erben, sondern auch auf nicht private Eigenschaften und Methoden zugreifen kann. Tatsächlich können Unterklassen auf private Eigenschaften und Methoden nicht zugreifen, selbst nachdem sie von der übergeordneten Klasse geerbt haben.

  1. Polymorphismus

Polymorphismus ist ein weiteres wichtiges objektorientiertes Programmierkonzept, das sich auf die Tatsache bezieht, dass dieselbe Methode in verschiedenen Situationen unterschiedliche Verhaltensweisen zeigen kann. Methoden mit Polymorphismus können automatisch die tatsächliche Methode ermitteln, die zur Laufzeit aufgerufen werden soll, was die Flexibilität und Skalierbarkeit des Programms erheblich verbessert.

In PHP wird Polymorphismus durch die Verwendung der Schlüsselwörter „abstract“ und „interface“ erreicht. Wir können Polymorphismus erreichen, indem wir abstrakte Klassen oder Schnittstellen definieren und abstrakte Klassen erben oder Schnittstellen implementieren.

2.1 Abstrakte Klasse

Eine abstrakte Klasse ist eine Klasse, die nicht instanziiert werden kann und nur als Superklasse anderer Klassen vererbt werden kann. Eine abstrakte Klasse kann einige abstrakte Methoden definieren, die in ihren Unterklassen implementiert werden müssen. Auf diese Weise können wir Polymorphismus durch abstrakte Klassen erreichen.

Das Folgende ist ein Beispiel für die Verwendung abstrakter Klassen zum Erreichen von Polymorphismus:

abstract class Shape {
  // 定义一个抽象方法
  abstract public function getArea();
}

class Circle extends Shape {
  private $radius;

  public function __construct($radius) {
    $this->radius = $radius;
  }

  // 实现抽象方法
  public function getArea() {
    return pi() * pow($this->radius, 2);
  }
}

class Square extends Shape {
  private $side;

  public function __construct($side) {
    $this->side = $side;
  }
  
  // 实现抽象方法
  public function getArea() {
    return pow($this->side, 2);
  }
}

// 创建一个圆
$circle = new Circle(2);
// 创建一个正方形
$square = new Square(2);

// 输出面积
echo $circle->getArea();  // 输出 "12.566370614359"
echo $square->getArea();  // 输出 "4"

In diesem Beispiel definieren wir eine abstrakte Klasse Shape und deklarieren eine abstrakte Methode namens getArea(). Dann haben wir zwei Unterklassen erstellt, Circle und Square, und jeweils die Methode getArea() implementiert. Schließlich erstellen wir Instanzen eines Kreises und eines Quadrats und rufen deren getArea()-Methoden auf.

2.2 Schnittstelle

Eine Schnittstelle ist ein abstrakter Typ, der eine Reihe von Methodensignaturen definiert (aber diese Methoden nicht implementiert). Eine Klasse kann diese Schnittstelle implementieren, um eine Verpflichtung zu dem durch diese Schnittstelle definierten Verhalten auszudrücken. Auf diese Weise können wir Polymorphismus auch über Schnittstellen erreichen. In PHP können wir das Schlüsselwort „interface“ verwenden, um die Schnittstelle zu definieren, und das Schlüsselwort „implements“, um die Schnittstelle zu implementieren.

Das Folgende ist ein Beispiel für die Verwendung von Schnittstellen zum Erreichen von Polymorphismus:

interface Animal {
  public function makeSound();
}

class Dog implements Animal {
  public function makeSound() {
    echo "Woof!";
  }
}

class Cat implements Animal {
  public function makeSound() {
    echo "Meow!";
  }
}

// 创建一个狗
$dog = new Dog();
// 创建一只猫
$cat = new Cat();

// 输出声音
$dog->makeSound();  // 输出 "Woof!"
$cat->makeSound();  // 输出 "Meow!"

In diesem Beispiel definieren wir eine Schnittstelle Animal und deklarieren eine Methode namens makeSound(). Dann haben wir zwei Unterklassen Dog und Cat erstellt, die die Animal-Schnittstelle bzw. die Methode makeSound() implementierten. Schließlich erstellen wir Instanzen eines Hundes und einer Katze und rufen deren makeSound()-Methoden auf.

Es ist zu beachten, dass Schnittstellen nur abstrakte Methoden definieren können und diese Methoden von Klassen implementiert werden müssen, die die Schnittstelle implementieren.

  1. Zusammenfassung

Vererbung, Polymorphismus und Schnittstellen sind drei wichtige objektorientierte Programmierkonzepte, die auch in PHP weit verbreitet sind. Mithilfe der Vererbung können wir einer Klasse ermöglichen, Eigenschaften und Methoden von einer anderen Klasse zu erben, und darüber hinaus benutzerdefinierte Eigenschaften und Methoden hinzufügen. Mithilfe von Polymorphismus können wir in verschiedenen Situationen Methoden mit unterschiedlichem Verhalten über denselben Methodennamen aufrufen. Mithilfe einer Schnittstelle können Sie eine Reihe von Methodensignaturen definieren und diese Methoden von Klassen implementieren lassen, die die Schnittstelle implementieren.

Wenn wir objektorientierte PHP-Programme schreiben, kann die sinnvolle Verwendung der drei Konzepte Vererbung, Polymorphismus und Schnittstellen unsere Programme flexibler, skalierbarer und einfacher zu warten machen.

Das obige ist der detaillierte Inhalt vonVerwendung von Vererbung, Polymorphismus und Schnittstellen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn