Rumah > Artikel > pembangunan bahagian belakang > Mengatasi dalam PHP
Overriding ialah konsep Pengaturcaraan Berorientasikan Objek yang serupa dengan konsep seperti Kelas, Objek, Enkapsulasi, Polimorfisme, Beban Terlebih dll dalam PHP. Mengatasi fungsi dan kelas dilakukan apabila kaedah dalam kelas terbitan dicipta yang sama seperti kaedah dalam kelas asas atau kelas induk. Kedua-dua kaedah ini mempunyai nama yang sama dan bilangan argumen yang sama.
IKLAN Kursus Popular dalam kategori ini PEMBANGUN PHP - Pengkhususan | 8 Siri Kursus | 3 Ujian Olok-olokMulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Mari kita terokai cara kerja utama dalam PHP.
Contoh kaedah overriding ditulis di bawah.
Kod:
class BaseClass { public function ABC() { echo "<br /> In the base class"; } } class DerivedClass extends BaseClass { // override the method ABC() of base class public function ABC() { echo "<br />In the derived class"; } } $obj1 = new BaseClass; $obj1->ABC(); $obj2 = new DerivedClass; $obj2->ABC();
Output:
Terdapat tiga pengubah suai akses.
Seperti yang kita ketahui kaedah yang dilindungi boleh diakses daripada kelas asas dan kelas terbitan ia boleh didedahkan kepada umum dalam subkelas tetapi bukan peribadi kerana peribadi hanya boleh diakses dalam kelas induk. Juga jika kaedah kelas mempunyai penentu akses sebagai awam maka kaedah mengatasi dalam kelas terbitan tidak boleh diisytiharkan sebagai peribadi dan dilindungi
Contoh penggantian menggunakan pengubah suai akses ditulis di bawah.
Kod:
class BaseClass { private function ABC() { echo "<br/>In the base class Method : ABC"; } protected function XYZ() { echo "<br/>In the base class Method : XYZ"; } } class DerivedClass extends BaseClass { // overriding with public for wider accessibility public function ABC() { echo "<br/> In the derived class Method : ABC"; } // overriding method // with more accessibility public function XYZ() { echo "<br/>In the derived class Method : XYZ"; } } //$obj1 = new BaseClass; //$obj1->ABC(); //throws fatal error //$obj1->XYZ(); //throws fatal error $obj2 = new DerivedClass; $obj2->ABC(); $obj2->XYZ();
Output:
Kata kunci terakhir digunakan untuk kelas dan kaedah. Kaedah dan Kelas, bukan pembolehubah boleh ditindih.
Apabila kaedah atau kelas diisytiharkan sebagai muktamad maka mengatasi kaedah atau kelas itu tidak boleh dilakukan juga warisan dengan kelas tidak boleh dilakukan.
Contoh penggantian menggunakan kata kunci akhir ditulis di bawah.
Kod:
class BaseClass { // Final method – display // this cannot be overridden in base class final function display() { echo "<br /> In the Base class display function"; } /// method - ABC function ABC() { echo "<br /> In the Base cLass ABC function"; } } class DerivedClass extends BaseClass { function ABC() { echo "<br /> In the Derived class ABC function"; } } $obj1 = new DerivedClass; $obj1->display(); $obj1->ABC();
Output:
A class declared as final cannot be inherited. A Final Class further have final method along with other methods. But since the class itself is declared final there is no use of declaring a final method in a final class.
The example of class overriding using final keyword is written below.
Code:
// class declared as final cannot be overridden final class BaseClass { // method - ABC function ABC() { echo "<br> In the BaseClass Method ABC function"; } // Final method - display function display() { echo "<br> In the BaseClass Method display function"; } } // here you cannot extend the base class // as the base class is declared as final $obj1 = new BaseClass; $obj1->display(); $obj1->ABC();
Output:
Atas ialah kandungan terperinci Mengatasi dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!