Heim  >  Artikel  >  Backend-Entwicklung  >  Fortgeschrittene objektorientierte PHP-Programmierung: Verständnis von Polymorphismus und Vererbung

Fortgeschrittene objektorientierte PHP-Programmierung: Verständnis von Polymorphismus und Vererbung

王林
王林Original
2024-05-08 18:06:01571Durchsuche

Bei der objektorientierten Programmierung ermöglicht der Polymorphismus, dass Objekte auf unterschiedliche Weise auf dieselben Methodenaufrufe reagieren, während die Vererbung es Unterklassen ermöglicht, Funktionen der übergeordneten Klasse zu erben und zu erweitern. Polymorphismus manifestiert sich in der unterschiedlichen Reaktion verschiedener Objekttypen auf dieselbe Methode, beispielsweise die speak()-Methode von Tier-, Hunde- und Katzenobjekten. Die Vererbung spiegelt sich darin wider, dass die Unterklasse Daten und Methoden von der übergeordneten Klasse erbt. Beispielsweise erbt die Mitarbeiterklasse den Namen und das Alter von der menschlichen Klasse und fügt ein neues Gehaltsattribut hinzu. Im tatsächlichen Fall erbt die Kiwi-Klasse den Fruchtnamen der Fruchtklasse, während die Sportwagenklasse die getType()-Methode in der übergeordneten Klasse durch Polymorphismus umschreibt, wodurch unterschiedliche Antworten auf dieselbe Methode in der Autoklasse realisiert werden und „Auto“ zurückgegeben wird " bzw. "Auto". Typinformationen für "Sportwagen".

PHP 对象导向编程进阶:理解多态和继承

Erweiterte objektorientierte PHP-Programmierung: Polymorphismus und Vererbung verstehen

Übersicht

Polymorphismus und Vererbung sind zwei Grundkonzepte der objektorientierten Programmierung (OOP). Durch Polymorphismus können Objekte auf unterschiedliche Weise auf denselben Methodenaufruf reagieren, während Vererbung die Erstellung neuer Klassen ermöglicht, die die Funktionalität bestehender Klassen erben und erweitern.

Polymorphismus

Polymorphismus ermöglicht es einem Objekt, je nach Typ unterschiedliche Operationen auszuführen.

class Animal {
    public function speak() {
        echo "Animal speaks\n";
    }
}

class Dog extends Animal {
    public function speak() {
        echo "Dog barks\n";
    }
}

class Cat extends Animal {
    public function speak() {
        echo "Cat meows\n";
    }
}

$dog = new Dog();
$dog->speak();  // 输出:Dog barks

$cat = new Cat();
$cat->speak();  // 输出:Cat meows

Inheritance

Inheritance ermöglicht die Erstellung neuer Klassen (Unterklassen), die Daten und Methoden von vorhandenen Klassen (Elternklassen) erben.

class Person {
    protected $name;
    protected $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

    public function getName() {
        return $this->name;
    }
}

class Employee extends Person {
    private $salary;

    public function __construct($name, $age, $salary) {
        parent::__construct($name, $age);  // 调用父类构造函数
        $this->salary = $salary;
    }

    public function getSalary() {
        return $this->salary;
    }
}

$employee = new Employee("John Doe", 30, 50000);
echo "Employee name: " . $employee->getName() . "\n";
echo "Employee salary: " . $employee->getSalary() . "\n";

Praktischer Fall

Fruchtklasse und Kiwi-Klasse (Vererbung)

class Fruit {
    protected $name;

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

    public function getName() {
        return $this->name;
    }
}

class Kiwi extends Fruit {
    public function __construct() {
        parent::__construct("Kiwi");
    }
}

$kiwi = new Kiwi();
echo "Fruit name: " . $kiwi->getName() . "\n";

Autoklasse und Sportwagenklasse (Polymorphismus)

class Car {
    protected $make;
    protected $model;

    public function __construct($make, $model) {
        $this->make = $make;
        $this->model = $model;
    }

    public function getType() {
        return "Car";
    }
}

class SportsCar extends Car {
    public function getType() {
        return "Sports Car";
    }
}

$car = new Car("Toyota", "Camry");
$sportsCar = new SportsCar("Ferrari", "F430");

echo "Car type: " . $car->getType() . "\n";
echo "Sports car type: " . $sportsCar->getType() . "\n";

Das obige ist der detaillierte Inhalt vonFortgeschrittene objektorientierte PHP-Programmierung: Verständnis von Polymorphismus und Vererbung. 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