Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mari kita bincangkan tentang kaedah persendirian kelas induk PHP

Mari kita bincangkan tentang kaedah persendirian kelas induk PHP

PHPz
PHPzasal
2023-04-03 16:14:13650semak imbas

PHP ialah bahasa skrip sebelah pelayan yang sangat popular yang sering digunakan untuk membangunkan aplikasi web. Dalam PHP, kita boleh mentakrifkan kelas, yang boleh mempunyai sifat dan kaedah Pengubah akses kaedah kelas termasuk awam, peribadi dan dilindungi. Antaranya, public bermaksud kaedah ini boleh diakses di luar kelas, manakala protected dan private tidak boleh.

Dalam perhubungan warisan, subkelas boleh mewarisi kaedah awam dan sifat kelas induk, tetapi subkelas tidak boleh mewarisi kaedah persendirian kelas induk. Artikel ini akan membincangkan isu yang berkaitan dengan kaedah persendirian dalam kelas induk PHP.

Pertama, kita perlu memahami kaedah persendirian.

Kaedah peribadi merujuk kepada kaedah yang hanya boleh diakses dalam kelas dan tidak boleh diakses di luar kelas atau dalam subkelas. Dalam PHP, kita boleh menentukan kaedah persendirian dengan menambahkan persendirian di hadapan kaedah tersebut. Contohnya:

class ParentClass {
    private function privateMethod() {
        // some code here
    }
}

Dalam contoh ini, privateMethod() ialah kaedah persendirian dan hanya boleh diakses dalam kelas ParentClass. Jika kita cuba mengakses kaedah ini di luar kelas atau dalam subkelas, ralat akan dilaporkan.

Apabila kita mentakrifkan subkelas, subkelas akan mewarisi kaedah dan sifat awam dan dilindungi bagi kelas induk. Tetapi untuk kaedah persendirian dalam kelas induk, subkelas tidak boleh mewarisinya. Ini kerana pewarisan adalah perhubungan is-a, manakala kaedah persendirian tergolong dalam hubungan has-a.

Berikut ialah contoh:

class ParentClass {
    private function privateMethod() {
        echo "This is a private method.";
    }
    
    protected function protectedMethod() {
        echo "This is a protected method.";
    }
}

class ChildClass extends ParentClass {
    // some code here
}

$childObj = new ChildClass();
$childObj->protectedMethod(); // This is a protected method.
$childObj->privateMethod(); // Fatal error: Call to private method ParentClass::privateMethod() from context...

Dalam contoh ini, kami mentakrifkan kelas ParentClass yang mengandungi kaedah persendirian privateMethod() dan kaedah dilindungi protectedMethod(). Kami juga mentakrifkan kelas ChildClass, yang mewarisi kelas ParentClass.

Apabila kita memanggil kaedah yang dilindungi protectedMethod() dalam kelas anak, ia berfungsi dengan baik, tetapi apabila kita cuba memanggil kaedah persendirian privateMethod() kelas induk, ralat maut berlaku.

Jadi, bagaimana untuk mengakses kaedah persendirian kelas induk dalam subkelas? Salah satu cara ialah menggunakan kaedah awam atau dilindungi kelas induk untuk memanggil kaedah persendirian.

Sebagai contoh:

class ParentClass {
    private function privateMethod() {
        echo "This is a private method.";
    }
    
    protected function protectedMethod() {
        echo "This is a protected method.";
        $this->privateMethod(); // call private method
    }
}

class ChildClass extends ParentClass {
    public function publicMethod() {
        $this->protectedMethod(); // call protected method
    }
}

$childObj = new ChildClass();
$childObj->publicMethod(); // This is a protected method. This is a private method.

Dalam contoh ini, kami memanggil kaedah persendirian dalam kaedah yang dilindungi kelas induk dan mentakrifkan kaedah awam publicMethod() dalam subkelas, yang Kaedah memanggil kaedah yang dilindungi protectedMethod(). Apabila kita memanggil kaedah publicMethod() subkelas, ia akan mengeluarkan "Ini ialah kaedah yang dilindungi. Ini ialah kaedah peribadi

Ringkasan

Dalam PHP, Kaedah persendirian ialah kaedah yang." hanya boleh diakses dalam kelas. Kelas kanak-kanak tidak boleh mewarisi kaedah peribadi kelas induk, tetapi ia boleh mengaksesnya dengan memasukkan kaedah awam atau dilindungi dalam kelas induk. Ini bermakna anda perlu memberi perhatian kepada akses kepada kaedah peribadi kelas induk apabila mewarisi untuk mengelakkan ralat yang tidak dijangka.

Atas ialah kandungan terperinci Mari kita bincangkan tentang kaedah persendirian kelas induk PHP. 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