Rumah > pembangunan bahagian belakang > tutorial php > Pemahaman mendalam tentang pengaturcaraan berorientasikan objek PHP: polimorfisme dan penggunaan antara muka

Pemahaman mendalam tentang pengaturcaraan berorientasikan objek PHP: polimorfisme dan penggunaan antara muka

WBOY
Lepaskan: 2024-06-03 09:56:57
asal
509 orang telah melayarinya

Dalam pengaturcaraan berorientasikan objek, polimorfisme membenarkan objek mempamerkan gelagat berbeza bergantung pada jenisnya. Contohnya, kelas terbitan boleh mengatasi kaedah kelas induk (mengatasi kaedah). Antara muka menentukan set kaedah yang mesti dilaksanakan oleh kelas, memaksa objek kelas berbeza untuk berkongsi gelagat Contohnya, antara muka boleh cetak ditakrifkan dan dilaksanakan oleh kelas Buku dan Majalah untuk mencapai gelagat yang konsisten.

Pemahaman mendalam tentang pengaturcaraan berorientasikan objek PHP: polimorfisme dan penggunaan antara muka

PHP Pemahaman mendalam tentang pengaturcaraan berorientasikan objek: penggunaan polimorfisme dan antara muka

Dalam pengaturcaraan berorientasikan objek, polimorfisme dan antara muka ialah konsep utama untuk meningkatkan fleksibiliti dan kebolehselenggaraan kod. Dalam artikel ini, kami akan mendalami penggunaan polimorfisme dan antara muka, serta menggunakan contoh praktikal untuk memperdalam pemahaman kami.

Polymorphism

Polymorphism membolehkan objek mempamerkan gelagat berbeza bergantung pada jenis objek. Sebagai contoh, kaedah dalam kelas induk boleh diganti dalam kelas terbitan, yang dipanggil pengganti kaedah.

Kes Amalan: Polimorfisme

Pertimbangkan contoh berikut di mana kelas Haiwan kami bertindak sebagai kelas induk: Animal 类充当父类:

class Animal {
    public function makeSound() {
        echo "I'm an animal.";
    }
}
Salin selepas log masuk

现在,让我们创建一个派生类 Dog,并覆盖 makeSound 方法:

class Dog extends Animal {
    public function makeSound() {
        echo "Woof woof!";
    }
}
Salin selepas log masuk

我们可以使用多态性来创建一个数组来存储各种 Animal 对象:

$animals = [new Animal(), new Dog()];

foreach ($animals as $animal) {
    $animal->makeSound();
}
Salin selepas log masuk

输出:

I'm an animal.
Woof woof!
Salin selepas log masuk

接口

接口是一个规定了类必须实现的方法集合的抽象类型。使用接口可以强制不同类的对象具有共同的行为。

实战案例:接口

让我们定义一个 Printable 接口:

interface Printable {
    public function print();
}
Salin selepas log masuk

现在,我们可以创建实现 Printable 接口的 BookMagazine 类:

class Book implements Printable {
    public function print() {
        echo "Printing a book...";
    }
}

class Magazine implements Printable {
    public function print() {
        echo "Printing a magazine...";
    }
}
Salin selepas log masuk

我们可以使用接口在我们的代码中创建一致的行为:

function print_items(array $printables) {
    foreach ($printables as $printable) {
        if ($printable instanceof Printable) {
            $printable->print();
        }
    }
}
Salin selepas log masuk

调用 print_items

print_items([new Book(), new Magazine()]);
Salin selepas log masuk

Sekarang, mari kita cipta kelas turunan Anjing , dan mengatasi kaedah makeSound:

Printing a book...
Printing a magazine...
Salin selepas log masuk
Kita boleh menggunakan polimorfisme untuk mencipta tatasusunan untuk menyimpan pelbagai objek Haiwan: 🎜rrreee🎜Output: 🎜rrreee🎜 🎜Antaramuka🎜🎜 🎜Antara muka ialah jenis abstrak yang menentukan satu set kaedah yang mesti dilaksanakan oleh kelas. Gunakan antara muka untuk memaksa objek dari kelas yang berbeza mempunyai tingkah laku yang sama. 🎜🎜🎜Kes praktikal: Antara Muka🎜🎜🎜Mari kita tentukan antara muka Boleh Dicetak: 🎜rrreee🎜Kini, kita boleh mencipta Bukuyang melaksanakan Boleh Dicetak antara muka > dan kelas Majalah: 🎜rrreee🎜Kami boleh menggunakan antara muka untuk mencipta tingkah laku yang konsisten dalam kod kami: 🎜rrreee🎜Panggil fungsi print_item: 🎜rrreee🎜Output: 🎜 rrreee

Atas ialah kandungan terperinci Pemahaman mendalam tentang pengaturcaraan berorientasikan objek PHP: polimorfisme dan penggunaan antara muka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan