Home

Java Sichtbarkeiten

In der Programmiersprache Java gibt es, anders als viele denken, vier Sichtbarkeiten. Diese Sichtbarkeiten will ich im folgenden einmal unter die Lupe nehmen. Diese Sichtbarkeiten sollten jedem Java-Entwickler präsent sein. Trotz allem kennen viele die vierte Sichtbarkeit nicht die unter anderem beim Testing oder der Entwicklung von APIs sehr praktisch ist.

Die populärsten Sichtbarkeiten sind public und private.

public ist wie die Übersetzung ins deutsche ("öffentlich") schon nahe legt die Sichtbarkeit bei welcher alle Klasse zugreifen können. Egal ob dies in einen anderen Package ist oder nicht. 

Bei private handelet es sich um das andere Extrem. Nur die eigene Klasse kann zugreifen. Dies sollte nicht mit den Objekten vertauscht werden, denn auch über verschiedene Objekte des gleichen Types hinweg kann zugegriffen werden.

Ein weiterer bekannter Fall ist protected. protected beschreibt zu einem das die Kindklassen, also diese welche von der Klasse erben, auf sämtliche protected Felder und Methode zugreifen können. Jedoch können auch alle Klassen in dem selben Paket (package) zugreifen. Untergeordnete Pakete sind jedoch nicht betroffen.

Ich schätze das diese drei Sichtbarkeiten jedem bekannt sind der bereits etwas in Java entwickeltete. Doch was ist die letzte Sichtbarkeit? Die letzte Sichtbarkeit ist package_private

Die Sichtbarkeit package_private sticht aus verschiedenen Gründen hervor. Zum einen besteht Sie aus zwei Worten und nicht nur aus einem. Außerdem bin ich mir sicher das niemand diese Sichtbarkeit schon einmal im Java-Code gesehen hat. Felder oder Methoden welche package_private sein sollen werden automatisch package_private wenn nichts davor geschrieben wird. Es handelt sich also um den Standardwert. Also zum Beispiel "int foo" statt "public int foo". Felder oder Methoden welche package_private sind können nur aus dem selben Paket angesteuert werden. Dies ist zum Beispiel extrem praktisch bei der Entwicklung von APIs.

Felder und Methoden können alle vier Sichtbarkeiten annehmen. Klassen können nur public oder package_private sein, außer bei der Verwendung interner Klassen.

Übersicht

      private         package_private         protected         public    
Klasse  x x x x
Paket (package)   x x x
Kindklasse (vererbte Klasse)     x x
andere Klassen       x
Tags: ,

Sämtliche Inhalte sind per SSL/TLS verschlüsselt.

Letzte Posts

© 2016-2017 Kikkirej.net. All Rights Reserved.