Rumah >pembangunan bahagian belakang >tutorial php >Cara menggunakan warisan, polimorfisme dan antara muka dalam PHP

Cara menggunakan warisan, polimorfisme dan antara muka dalam PHP

王林
王林asal
2023-06-23 11:49:551396semak imbas

PHP ialah bahasa skrip sumber terbuka yang digunakan untuk pengaturcaraan sebelah pelayan dan telah menjadi salah satu bahasa pengaturcaraan yang paling popular dan digunakan secara meluas di dunia. Dalam PHP, pewarisan, polimorfisme dan antara muka ialah tiga konsep pengaturcaraan berorientasikan objek penting yang membolehkan pembangun memperoleh kelebihan besar dalam penggunaan semula kod, fleksibiliti dan kebolehselenggaraan. Artikel ini akan menyelidiki ketiga-tiga konsep ini dan memperkenalkan cara menggunakannya dalam PHP.

  1. Warisan

Warisan ialah salah satu konsep paling asas dalam pengaturcaraan berorientasikan objek. Ini bermakna kelas boleh mewarisi sifat dan kaedah kelas lain dan menambah sifat dan kaedah tersuai atas dasar ini. Subkelas dicapai dengan melanjutkan kelas induk (juga dipanggil kelas super atau kelas asas), membenarkan subkelas menggunakan semula kod dan fungsi kelas induk.

Dalam PHP, pewarisan dilakukan dengan menggunakan kata kunci "extends". Sebagai contoh, kod berikut ialah pelaksanaan warisan mudah:

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!”

Dalam contoh ini, kami mentakrifkan kelas bernama Person dan mentakrifkan kaedah bernama sayHello() di dalamnya. Kami kemudian mencipta subkelas yang dipanggil Pelajar dan melanjutkannya ke kelas Orang menggunakan kata kunci "lanjutkan". Dalam subkelas, kami menambah kaedah baharu yang dipanggil sayGoodbye(). Akhir sekali, kami mencipta contoh kelas Pelajar bernama $student dan memanggil kaedahnya.

Perlu diambil perhatian bahawa apabila subkelas mewarisi kelas induk, ia bukan sahaja boleh mewarisi sifat dan kaedahnya, tetapi juga mengakses sifat dan kaedah bukan persendirian. Malah, untuk sifat dan kaedah persendirian, subkelas tidak boleh mengaksesnya walaupun selepas mewarisi daripada kelas induk.

  1. Polymorphism

Polymorphism ialah satu lagi konsep pengaturcaraan berorientasikan objek utama Ia merujuk kepada fakta bahawa kaedah yang sama boleh berkelakuan berbeza dalam situasi yang berbeza. Kaedah dengan polimorfisme secara automatik boleh menentukan kaedah sebenar yang harus dipanggil pada masa jalanan, yang meningkatkan fleksibiliti dan kebolehskalaan program.

Dalam PHP, cara untuk mencapai polimorfisme adalah dengan menggunakan kata kunci "abstrak" dan "antara muka". Kita boleh mencapai polimorfisme dengan mentakrifkan kelas atau antara muka abstrak dan mewarisi kelas abstrak atau antara muka pelaksanaan.

2.1 Kelas abstrak

Kelas abstrak ialah kelas yang tidak boleh dijadikan instantiat dan hanya boleh diwarisi sebagai kelas super kelas lain. Kelas abstrak boleh menentukan beberapa kaedah abstrak, yang mesti dilaksanakan dalam subkelasnya. Dengan cara ini kita boleh mencapai polimorfisme melalui kelas abstrak.

Berikut ialah contoh menggunakan kelas abstrak untuk mencapai polimorfisme:

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"

Dalam contoh ini, kami mentakrifkan kelas abstrak Bentuk dan mengisytiharkan abstraksi yang dipanggil kaedah getArea(). Kemudian, kami mencipta dua subkelas, Circle dan Square, dan melaksanakan kaedah getArea() masing-masing. Akhir sekali, kami mencipta contoh bulatan dan segi empat sama dan memanggil kaedah getArea() mereka.

2.2 Antara Muka

Antara muka ialah jenis abstrak yang mentakrifkan satu set tandatangan kaedah (tetapi tidak melaksanakan kaedah ini Kelas boleh melaksanakan antara muka ini untuk mewakili gelagat yang ditakrifkan oleh antara muka ini a). komitmen. Dengan cara ini kita boleh mencapai polimorfisme melalui antara muka juga. Dalam PHP, kita boleh menggunakan kata kunci "antara muka" untuk mentakrifkan antara muka dan kata kunci "melaksanakan" untuk melaksanakan antara muka.

Berikut ialah contoh menggunakan antara muka untuk mencapai polimorfisme:

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!"

Dalam contoh ini, kami mentakrifkan antara muka Haiwan dan mengisytiharkan kaedah bernama makeSound(). Kemudian, kami mencipta dua subkelas Dog dan Cat yang melaksanakan antara muka Haiwan, dan melaksanakan kaedah makeSound() masing-masing. Akhir sekali, kami mencipta contoh anjing dan kucing dan memanggil kaedah makeSound() mereka.

Perlu diingatkan bahawa antara muka hanya boleh mentakrifkan kaedah abstrak, dan kaedah ini mesti dilaksanakan oleh kelas yang melaksanakan antara muka.

  1. Ringkasan

Warisan, polimorfisme dan antara muka ialah tiga konsep pengaturcaraan berorientasikan objek yang penting, yang juga digunakan secara meluas dalam PHP. Menggunakan warisan, kita boleh membenarkan satu kelas mewarisi sifat dan kaedah daripada kelas lain dan menambah sifat dan kaedah tersuai di atas ini. Menggunakan polimorfisme, kita boleh memanggil kaedah dengan tingkah laku yang berbeza melalui nama kaedah yang sama dalam situasi yang berbeza. Menggunakan antara muka, anda boleh menentukan set tandatangan kaedah dan kaedah ini dilaksanakan oleh kelas yang melaksanakan antara muka.

Apabila kami menulis program berorientasikan objek PHP, penggunaan munasabah bagi tiga konsep pewarisan, polimorfisme dan antara muka boleh menjadikan atur cara kami lebih fleksibel, berskala dan lebih mudah diselenggara.

Atas ialah kandungan terperinci Cara menggunakan warisan, polimorfisme dan antara muka dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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