Fahami mekanisme pewarisan berorientasikan objek PHP

王林
Lepaskan: 2023-08-10 10:44:01
asal
1273 orang telah melayarinya

Fahami mekanisme pewarisan berorientasikan objek PHP

Fahami mekanisme pewarisan berorientasikan objek PHP

Warisan ialah konsep penting dalam pengaturcaraan berorientasikan objek, yang membolehkan penciptaan kelas baharu yang merangkumi ciri dan fungsi kelas lama.

Dalam PHP, pewarisan boleh dicapai melalui kata kunci extends. Melalui warisan, subkelas boleh mewarisi sifat dan kaedah kelas induk, dan boleh menambah sifat dan kaedah baharu, atau mengatasi kaedah yang diwarisi. extends实现。通过继承,子类可以继承父类的属性和方法,并且可以添加新的属性和方法,或者重写继承的方法。

让我们通过一个示例来Fahami mekanisme pewarisan berorientasikan objek PHP。

class Animal {
   public $name;
  
   public function eat() {
      echo "正在吃...";
   }
}

class Dog extends Animal {
   public function bark() {
      echo "正在汪汪叫...";
   }
}

$dog = new Dog();
$dog->name = "小黄";
$dog->eat();
$dog->bark();
Salin selepas log masuk

在上面的示例中,我们首先定义了一个Animal类,它具有一个name属性和一个eat()方法。然后,我们使用extends关键字创建了一个Dog类并继承了Animal类。Dog类添加了一个bark()方法。

我们创建了一个Dog类的实例$dog,并且可以给$dogname属性赋值。因为Dog类继承了Animal类,所以$dog对象可以调用eat()方法和bark()方法。

继承的好处之一是可以重用代码。通过继承,我们可以在多个类之间共享相同的属性和方法,而不需要重复编写相同的代码。这使得代码更加模块化和易于维护。

另一个好处是通过继承可以实现多态。多态允许使用相同的方法名称在不同的类中实现不同的行为。让我们通过一个示例来说明这一点。

class Animal {
   public function makeSound() {
      echo "动物发出声音...";
   }
}

class Dog extends Animal {
   public function makeSound() {
      echo "狗发出声音:汪汪汪...";
   }
}

class Cat extends Animal {
   public function makeSound() {
      echo "猫发出声音:喵喵喵...";
   }
}

$animal = new Animal();
$dog = new Dog();
$cat = new Cat();

$animal->makeSound();  // 输出:动物发出声音...
$dog->makeSound();  // 输出:狗发出声音:汪汪汪...
$cat->makeSound();  // 输出:猫发出声音:喵喵喵...
Salin selepas log masuk

在上面的示例中,我们定义了一个Animal类和两个子类DogCat。它们分别重写了makeSound()方法。当我们调用makeSound()方法时,具体调用哪个类的方法取决于对象的类型。

这是继承和多态的典型例子。尽管它们有相同的方法名称,但由于子类进行了重写,所以执行的代码是不同的。这使得我们可以根据实际情况动态地决定应该执行哪个类的方法。

继承还可以通过父类的构造函数和析构函数进行扩展。子类可以在调用父类的构造函数之前或之后添加额外的逻辑。同样,子类可以在调用父类的析构函数之前或之后做一些处理。

class Animal {
   public function __construct() {
      echo "Animal类的构造函数被调用...";
   }
  
   public function __destruct() {
      echo "Animal类的析构函数被调用...";
   }
}

class Dog extends Animal {
   public function __construct() {
      parent::__construct();
      echo "Dog类的构造函数被调用...";
   }
  
   public function __destruct() {
      echo "Dog类的析构函数被调用...";
      parent::__destruct();
   }
}

$dog = new Dog();
Salin selepas log masuk

在上面的示例中,我们定义了一个Animal类和一个Dog类。Animal类具有自己的构造函数和析构函数,而Dog类在调用父类的构造函数之后添加了额外的逻辑,并在调用父类的析构函数之前添加了一些处理。

当我们创建Dog类的实例时,首先会调用Animal类的构造函数,然后调用Dog

Mari kita memahami mekanisme pewarisan berorientasikan objek PHP melalui contoh.

rrreee

Dalam contoh di atas, kami mula-mula mentakrifkan kelas Animal, yang mempunyai atribut name dan kaedah eat(). Kemudian, kami mencipta kelas Anjing menggunakan kata kunci extends dan mewarisi kelas Animal. Kelas Anjing menambah kaedah bark().

Kami telah mencipta contoh $dog kelas Dog dan boleh memberikan nilai kepada atribut name $dog . Oleh kerana kelas Dog mewarisi kelas Animal, objek $dog boleh memanggil kaedah eat() dan bark()kaedah. 🎜🎜Salah satu faedah pewarisan ialah keupayaan untuk menggunakan semula kod. Melalui pewarisan, kita boleh berkongsi sifat dan kaedah yang sama antara berbilang kelas tanpa menulis kod yang sama berulang kali. Ini menjadikan kod lebih modular dan lebih mudah untuk diselenggara. 🎜🎜Faedah lain ialah polimorfisme boleh dicapai melalui pewarisan. Polimorfisme membenarkan tingkah laku yang berbeza dilaksanakan dalam kelas yang berbeza menggunakan nama kaedah yang sama. Mari kita gambarkan ini dengan contoh. 🎜rrreee🎜Dalam contoh di atas, kami menentukan kelas Haiwan dan dua subkelas Anjing dan Kucing. Mereka mengatasi kaedah makeSound() masing-masing. Apabila kita memanggil kaedah makeSound(), kaedah kelas mana yang dipanggil bergantung pada jenis objek. 🎜🎜Ini adalah contoh klasik pewarisan dan polimorfisme. Walaupun mereka mempunyai nama kaedah yang sama, kod yang dilaksanakan adalah berbeza kerana overriding oleh subkelas. Ini membolehkan kami membuat keputusan secara dinamik kaedah kelas mana yang harus dilaksanakan berdasarkan situasi sebenar. 🎜🎜Warisan juga boleh dilanjutkan melalui pembina dan pemusnah kelas induk. Subkelas boleh menambah logik tambahan sebelum atau selepas memanggil pembina kelas induk. Begitu juga, subkelas boleh melakukan beberapa pemprosesan sebelum atau selepas memanggil pemusnah kelas induk. 🎜rrreee🎜Dalam contoh di atas, kami menentukan kelas Haiwan dan kelas Anjing. Kelas Animal mempunyai pembina dan pemusnahnya sendiri, manakala kelas Dog menambah logik tambahan selepas memanggil pembina kelas induk dan memanggil pemusnah kelas induk Beberapa pemprosesan telah ditambahkan sebelum pembina. 🎜🎜Apabila kita mencipta contoh kelas Dog, kita akan memanggil pembina kelas Animal dahulu, dan kemudian memanggil kelas Dog. pembina sendiri. Apabila objek dimusnahkan, pemusnah dipanggil dalam susunan yang bertentangan. 🎜🎜Warisan ialah teknik yang sangat berguna dalam pengaturcaraan berorientasikan objek. Ia membolehkan kami mencipta kod yang lebih berstruktur dan modular, meningkatkan kebolehgunaan semula dan kebolehselenggaraan kod. 🎜🎜Melalui contoh kod, kami mempunyai pemahaman yang lebih mendalam tentang mekanisme pewarisan berorientasikan objek PHP. Harap artikel ini membantu anda! 🎜

Atas ialah kandungan terperinci Fahami mekanisme pewarisan berorientasikan objek PHP. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!