Was bedeutet der Modifikator protected
?
Sind Methoden, Konstruktoren oder Felder in einer Klasse als protected
gekennzeichnet, so sind diese Strukturen ähnlich einer package-default
-Deklaration
nur im Package der deklarierenden Klasse ansprechbar, bis auf Konstruktoren
zusätzlich jedoch auch noch in den von ihr abgeleiteten Klassen
anderer Packages.
package abc; public class ProtectedTest { protected void machWas() { System.out.println("ProtectedTest#machWas() ausgefuehrt"); } } //------------------------------------------ package xyz; import abc.ProtectedTest; public class Prot2Test extends ProtectedTest { public static void main(String[] args) { new Prot2Test().machWas(); } }
Im o.a. Beispiel wird eine Klasse Prot2Test
im Package
xyz
deklariert, die von der Klasse ProtectedTest
im Package abc
abgeleitet ist. In main()
wird die Kindklasse instanziert und die Methode machWas()
aufgerufen. Sie wurde von der Elternklasse geerbt und dort protected
deklariert. So ist sie auf dem Objekt der abgeleiteten Klasse
erreichbar.
Entfernt man das Schlüsselwort protected
der
Methode machWas()
ist das Beispiel fehlerhaft, da die
Methode dann lediglich im Package abc
sichtbar ist.
Zum Geheimnisprinzip und für einen Vergleich der Zugriffsmodifikatoren siehe auch den Artikel zum Geheimnisprinzip.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.