php tidak memanggil kelas induk

王林
Lepaskan: 2023-05-07 10:41:07
asal
450 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

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!