Rumah >pembangunan bahagian belakang >masalah PHP >php tidak memanggil kelas induk
Warisan dalam PHP ialah ciri yang sangat berkuasa, yang membolehkan subkelas mewarisi sifat dan kaedah kelas induk, mengelakkan masalah menulis kod berulang kali. Dalam proses pembangunan sebenar, kita sering perlu menulis semula kaedah kelas induk dalam subkelas untuk memenuhi keperluan khusus. Tetapi kadangkala kita tidak perlu memanggil kaedah kelas induk Bagaimana kita harus menanganinya?
Dalam PHP, apabila kita mengatasi kaedah, kita tidak perlu memanggil kaedah kelas induk. Jika kita melaksanakan kaedah dengan nama yang sama dalam subkelas, kaedah ini akan mengatasi kaedah dengan nama yang sama dalam kelas induk. Jika kita perlu menggunakan kaedah kelas induk, kita boleh menggunakan dua kaedah berikut:
Apabila kita mengatasinya dalam kaedah kelas anak A, anda boleh menggunakan kata kunci induk untuk memanggil kaedah kelas induk. Kaedah pelaksanaan khusus adalah seperti berikut:
class ParentClass { public function func() { echo 'ParentClass'; } } class SubClass extends ParentClass { public function func() { parent::func(); echo 'SubClass'; } } $obj = new SubClass(); $obj->func(); // 输出:ParentClass SubClass
Dalam kod di atas, kami mula-mula mentakrifkan kelas induk ParentClass dan subkelas SubClass yang diwarisi daripada kelas induk ParentClass. Kami mengatasi kaedah kelas induk func() dalam subkelas, dan menggunakan pernyataan induk::fun() untuk memanggil kaedah kelas induk. Apabila kita menjalankan $obj->func(), kandungan kaedah kelas induk akan menjadi output dahulu, dan kemudian kandungan kaedah subkelas akan menjadi output.
Jika kita mengatasi kaedah dalam subkelas, tetapi tidak perlu menggunakan kandungan kaedah kelas induk, maka kita boleh juga tidak Gunakan kata kunci induk. Kaedah pelaksanaan khusus adalah seperti berikut:
class ParentClass { public function func() { echo 'ParentClass'; } } class SubClass extends ParentClass { public function func() { echo 'SubClass'; } } $obj = new SubClass(); $obj->func(); // 输出:SubClass
Kod di atas adalah serupa dengan kod sebelumnya, kecuali apabila menulis semula kaedah kelas induk dalam subkelas, pernyataan induk::fun() tidak digunakan untuk memanggil kaedah kelas induk. Apabila kita menjalankan $obj->func(), hanya kandungan kaedah subkelas akan menjadi output dan kandungan kaedah kelas induk tidak akan dikeluarkan.
Perlu diambil perhatian bahawa jika kita mengatasi pembina kelas induk dalam subkelas, kita mesti memanggil pembina kelas induk dalam pembina subkelas, jika tidak objek subkelas tidak boleh dijana. Kaedah pelaksanaan khusus adalah seperti berikut:
class ParentClass { public $name; public function __construct($name) { $this->name = $name; } } class SubClass extends ParentClass { public function __construct($name) { parent::__construct($name); } } $obj = new SubClass('Tom'); echo $obj->name; // 输出:Tom
Dalam kod di atas, kami mula-mula mentakrifkan kelas induk ParentClass dan subkelas SubClass yang diwarisi daripada kelas induk ParentClass. Kami menulis semula pembina kelas induk dalam subkelas dan memanggil pembina kelas induk menggunakan penyataan induk::__construct($name). Apabila kita menjana objek subkelas $obj, pembina subkelas akan dipanggil, dan pembina kelas induk akan dipanggil melalui induk::__construct($name) untuk memberikan nilai kepada atribut subkelas. Akhir sekali, kami mengeluarkan nilai atribut subkelas $obj->nama, yang menghasilkan 'Tom'.
Ringkasnya, apabila kita mengatasi kaedah kelas induk dalam subkelas, jika kita perlu menggunakan kandungan kaedah kelas induk, kita boleh menggunakan kata kunci induk untuk memanggil kaedah kelas induk jika kita tidak perlu gunakan kandungan kaedah kelas induk, kandungan Kaedah, anda boleh terus mengatasi kaedah dalam subkelas. Sama ada cara, masalah memanggil kaedah kelas induk dikendalikan dengan baik.
Atas ialah kandungan terperinci php tidak memanggil kelas induk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!