Ich habe die Instanz der Basisklasse in der abgeleiteten Klasse erstellt und versucht, auf geschützte Member zuzugreifen.Java - geschützte Member, auf die in der abgeleiteten Klasse mithilfe der Basisklasseninstanz zugegriffen wird
Ich kann direkt auf geschützte Member in einer abgeleiteten Klasse zugreifen, ohne die Basisklasse instanziieren.
Basisklasse:
package com.core;
public class MyCollection {
protected Integer intg;
}
Eine abgeleitete Klasse im selben Paket -
package com.core;
public class MyCollection3 extends MyCollection {
public void test(){
MyCollection mc = new MyCollection();
mc.intg=1; // Works
}
}
Eine abgeleitete Klasse in einem anderen Paket -
package secondary;
import com.core.MyCollection;
public class MyCollection2 extends MyCollection{
public void test(){
MyCollection mc = new MyCollection();
mc.intg = 1; //!!! compile time error - change visibility of "intg" to protected
}
}
Wie ist es möglich, Zugang ein geschütztes Mitglied einer Basisklasse in einer abgeleiteten Klasse, die die Instanz der Basisklasse verwendet, wenn die abgeleitete Klasse ebenfalls in s ist ein Paket, aber nicht, wenn die abgeleitete Klasse in einem anderen Paket ist?
Wenn ich protected member als "static" markiere, kann ich mit einer Instanz der Basisklasse in einer abgeleiteten Klasse, die sich in einem anderen Paket befindet, auf das geschützte Member der Basisklasse zugreifen.
möglich Duplikat [Java Protected Access funktioniert nicht] (http://stackoverflow.com/questions/332920/java-protected-access-not-working) --- Eigentlich ist das der falsche Betrogene! Es tut uns leid! Dies ist jedoch definitiv ein Betrogener. – polygenelubricants
keine Sorge, Ihre IDE wird keinen Unterschied in der Frage machen, da es sich um die Semantik der Java-Sprache selbst handelt. –
mögliches Duplikat von [Warum kann ich nicht auf geschützte Java-Methode zugreifen, auch wenn ich die Klasse erweitert habe?] (Http://StackOverflow.com/questions/1622219/why-cant-i-access-protected-java-method -even-think-ive-extended-the-class) – starblue