Rumah >pembangunan bahagian belakang >masalah PHP >php tidak memanggil kelas induk

php tidak memanggil kelas induk

王林
王林asal
2023-05-07 10:41:07495semak imbas

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:

  1. Gunakan kata kunci induk untuk memanggil kaedah kelas induk

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.

  1. Jangan gunakan kata kunci induk

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!

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