Schauen wir uns zunächst die folgenden beiden Beispiele an:
Beispiel 1:
//包A中有一个动物类 package testa; public class Animal { protected void crowl(String c){ System.out.println(c); } }
(Empfohlenes Video-Tutorial: java Video)
Beispiel 2:
package testb; import testa.Animal; class Cat extends Animal { } public class Rat extends Animal{ public void crowl(){ this.crowl("zhi zhi"); //没有问题,继承了Animal中的protected方法——crowl(String) Animal ani=new Animal(); ani.crowl("animail jiaojiao"); //wrong, The method crowl(String) from the type Animal is not visible Cat cat=new Cat(); cat.crowl("miao miao"); //wrong, The method crowl(String) from the type Animal is not visible } }
Da sowohl Katzen als auch Mäuse die Tierklasse erben, kann die Vererbung der Katze im Rahmen der Mausklasse nicht erfolgen gesehen werden Was ist mit der crow()-Methode?
Fragen und Antworten:
geschützt Zugriffsschutzregeln sind sehr subtil. Obwohl die geschützte Domäne für alle Unterklassen sichtbar ist. Aber eines ist sehr wichtig. Wenn sich in verschiedenen Paketen befinden, können -Unterklassen nur auf die geschützte Domäne der übergeordneten Klasse zugreifen, die sie innerhalb ihres eigenen Bereichs erben, aber nicht auf andere Unterklassen (mit derselben übergeordneten Klasse). ). Die vom biologischen Bruder der Klasse geerbte geschützte Domäne und die geschützte Domäne ani.crow1() des übergeordneten Klassenobjekts. Um es ganz klar auszudrücken: Mäuse können nur „zhi, zhi“ rufen. Selbst wenn er die Katze sehen kann (er kann in seinem eigenen Bereich ein Katzenobjekt erstellen), wird er nie miauen lernen.
Mit anderen Worten, die von cat geerbte Crowl-Methode ist im Rahmen der Cat-Klasse sichtbar. Im Rahmen der Rattenklasse ist es jedoch nicht sichtbar, auch wenn Ratte und Katze Brüder sind.
Außerdem: Aus diesem Grund können wir das Objekt aObject.clone() nicht einfach direkt klonen, wenn wir die Methode clone verwenden. Es muss in aObject.bObject=(Bobject)this.bObject.clone();
Zusammenfassung:
Wenn B A erweitert, kann es im Rahmen der Unterklasse B nur aufrufen die geschützte Methode des durch diese Unterklasse B definierten Objekts (diese Methode wird von der übergeordneten Klasse A geerbt). Die geschützten Methoden anderer Objekte der Klasse A (A selbst und von A geerbt) können nicht aufgerufen werden.
Empfohlenes Tutorial: Java-Einstiegsprogramm
Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel eines geschützten Schlüsselworts in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!