Mengapa super.super.method(); Dilarang di Jawa?
Penggunaan super.super.method(); di Jawa adalah dilarang kerana kebimbangan enkapsulasi. Enkapsulasi bertujuan untuk menghalang kelakuan kelas induk.
Walaupun kadangkala munasabah untuk memintas kelakuan kelas sendiri (dalam kaedah yang sama), adalah penting untuk tidak memintas kelakuan ibu bapa. Pertimbangkan hierarki kelas berikut:
Ia logik untuk mentakrifkan kaedah berikut:
Ini memastikan bahawa subkelas mematuhi kekangan yang dikenakan oleh kelas induk mereka.
Walau bagaimanapun, jika super.super.add() dibenarkan, subkelas NaughtyCollection yang berniat jahat boleh memintas item merah RedCollection keperluan:
Ini akan memecahkan invarian yang ditubuhkan oleh RedCollection, mewujudkan koleksi item yang mungkin tidak berwarna merah.
Oleh itu, panggilan super.super.method() adalah dilarang dalam Java untuk mengekalkan enkapsulasi dan menguatkuasakan gelagat kelas.
Atas ialah kandungan terperinci Mengapakah `super.super.method();` Tidak Dibenarkan dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!