Sichtbarkeit: Unterschied zwischen den Versionen

Aus EINI
Wechseln zu: Navigation, Suche
 
(9 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Sichtbarkeit ist eine Eigenschaft von Methoden, Attributen und Konstruktoren. Sie bestimmt, ob Elemente einer Klasse außerhalb der Klasse, in welcher sie deklariert worden sind, aufgerufen oder verwendet werden können.
+
'''Sichtbarkeit''' ist eine Eigenschaft von [[Klasse]]n, [[Methode|Methoden]], [[Attribut|Attributen]] und [[Konstruktor|Konstruktoren]]. Sie bestimmt, ob Elemente einer [[Klasse]] außerhalb der Klasse, in der sie deklariert wurden, aufgerufen oder verwendet werden können.
  
= Syntaxdiagram =
+
= Syntaxdiagramm =
  
 
[[Datei:visibility_modifier.png]]
 
[[Datei:visibility_modifier.png]]
Zeile 7: Zeile 7:
 
= Öffentlich =
 
= Öffentlich =
  
Öffentliche Elemente einer Klasse werden mit dem Schlüsselwort '''public''' gekennzeichnet. Diese Elemente einer Klasse können von überall aus aufgerufen oder verwendet werden, solange die deklarierende Klasse importiert wurde. Ebenso kann auf Attribute von Objekten dieser Klasse direkt zugegriffen werden. Dies ist jedoch für gewöhnlich nicht erwünscht.
+
Öffentliche Elemente einer Klasse werden mit dem [[Modifikator]] '''public''' gekennzeichnet. Diese Elemente einer Klasse können von überall aus aufgerufen oder verwendet werden, solange die deklarierende Klasse importiert wurde. Ebenso kann auf Attribute von Objekten dieser Klasse direkt zugegriffen werden. Dies ist jedoch für gewöhnlich nicht erwünscht.
  
 
= Privat =
 
= Privat =
  
Private Elemente einer Klasse werden mit dem Schlüsselwort '''private''' gekennzeichnet. Diese können '''nur''' von der deklarierenden Klasse selbst aufgerufen oder verwendet werden. Es gibt '''keine''' Möglichkeit (wie z.B. in ''C++'' sog. ''friends'') in Java, diese Einschränkung aufzuheben. Für gewöhnlich werden Objektattribute von Klassen als Privat deklariert und sind nur über spezielle [[getter]] und [[setter]] erreichbar.
+
Private Elemente einer Klasse werden mit dem [[Schlüsselwort]] '''private''' gekennzeichnet. Diese können '''nur''' von der deklarierenden Klasse selbst aufgerufen oder verwendet werden. Es gibt '''keine''' Möglichkeit in [[Java]] (wie z.B. in ''C++'' über sog. ''friends''), diese Einschränkung aufzuheben. Für gewöhnlich werden Objektattribute von Klassen als privat deklariert und sind nur über spezielle [[Getter]] und [[Setter]] erreichbar.
  
 
= Beschützt =
 
= Beschützt =
  
Beschützte Elemente einer Klasse werden mit dem Schlüsselwort '''protected''' gekennzeichnet. Diese können '''nur''' von der deklarierenden Klasse selbst oder von der deklarierenden Klasse erbenden Klassen aufgerufen oder verwendet werden. Dies wird meist genutzt, um den Zugriff auf sich ändernde Attribute nach außen hin zu schützen, die Änderung der Attribute selbst jedoch, durch die Implementierung der erbenden Klasse, zu vereinfachen.
+
Beschützte Elemente einer Klasse werden mit dem Schlüsselwort '''protected''' gekennzeichnet. Diese können nur von der deklarierenden Klasse selbst, von Klassen, die von dieser [[Vererbung|erben]] oder von Klassen im gleichen [[Paket]] aufgerufen oder verwendet werden. Dies wird meistens dafür verwendet, den Zugriff auf sich ändernde Attribute nach außen hin zu schützen, die Änderung der Attribute selbst jedoch durch die Implementierung der erbenden Klassen zu vereinfachen.
  
 
= Unmarkiert / Paketprivat =
 
= Unmarkiert / Paketprivat =
  
Verwendet man keines der Schlüsselworte '''private''', '''protected''' oder '''public''' gilt ein Element einer Klasse als ''package private''. Das heißt, dass alle Klassen im selben Paket freien Zugriff auf diese Elemente haben, Klassen aus anderen Paketen (also insbesondere meist alle Klassen, welche die deklarierende Klasse als Bibliothek verwenden), jedoch nicht. Ein Element unmarkiert zu lassen, gilt jedoch meist als schlechter Stil.
+
Verwendet man keines der Schlüsselwörter '''private''', '''protected''' oder '''public''', gilt ein Element einer Klasse als '''package private'''. Das heißt, dass alle Klassen im selben Paket freien Zugriff auf diese Elemente haben, Klassen aus anderen Paketen (das heißt insbesondere meistens alle Klassen, die die deklarierende Klasse als [[Bibliothek]] verwenden), jedoch nicht.  
 +
 
 +
Ein Element unmarkiert zu lassen, gilt jedoch häufig als schlechter Stil.
 +
 
 +
= Tabelle =
 +
 
 +
{|class="wikitable"
 +
|+ Sichtbarkeit
 +
!Modifikator!!Klasse!!Paket!!Erbe!!Andere
 +
|-
 +
|public
 +
|Ja
 +
|Ja
 +
|Ja
 +
|Ja
 +
|-
 +
|protected
 +
|Ja
 +
|Ja
 +
|Ja
 +
|Nein
 +
|-
 +
|unmarkiert
 +
|Ja
 +
|Ja
 +
|Nein
 +
|Nein
 +
|-
 +
|private
 +
|Ja
 +
|Nein
 +
|Nein
 +
|Nein
 +
|-
 +
|}

Aktuelle Version vom 30. November 2016, 15:24 Uhr

Sichtbarkeit ist eine Eigenschaft von Klassen, Methoden, Attributen und Konstruktoren. Sie bestimmt, ob Elemente einer Klasse außerhalb der Klasse, in der sie deklariert wurden, aufgerufen oder verwendet werden können.

Syntaxdiagramm

Visibility modifier.png

Öffentlich

Öffentliche Elemente einer Klasse werden mit dem Modifikator public gekennzeichnet. Diese Elemente einer Klasse können von überall aus aufgerufen oder verwendet werden, solange die deklarierende Klasse importiert wurde. Ebenso kann auf Attribute von Objekten dieser Klasse direkt zugegriffen werden. Dies ist jedoch für gewöhnlich nicht erwünscht.

Privat

Private Elemente einer Klasse werden mit dem Schlüsselwort private gekennzeichnet. Diese können nur von der deklarierenden Klasse selbst aufgerufen oder verwendet werden. Es gibt keine Möglichkeit in Java (wie z.B. in C++ über sog. friends), diese Einschränkung aufzuheben. Für gewöhnlich werden Objektattribute von Klassen als privat deklariert und sind nur über spezielle Getter und Setter erreichbar.

Beschützt

Beschützte Elemente einer Klasse werden mit dem Schlüsselwort protected gekennzeichnet. Diese können nur von der deklarierenden Klasse selbst, von Klassen, die von dieser erben oder von Klassen im gleichen Paket aufgerufen oder verwendet werden. Dies wird meistens dafür verwendet, den Zugriff auf sich ändernde Attribute nach außen hin zu schützen, die Änderung der Attribute selbst jedoch durch die Implementierung der erbenden Klassen zu vereinfachen.

Unmarkiert / Paketprivat

Verwendet man keines der Schlüsselwörter private, protected oder public, gilt ein Element einer Klasse als package private. Das heißt, dass alle Klassen im selben Paket freien Zugriff auf diese Elemente haben, Klassen aus anderen Paketen (das heißt insbesondere meistens alle Klassen, die die deklarierende Klasse als Bibliothek verwenden), jedoch nicht.

Ein Element unmarkiert zu lassen, gilt jedoch häufig als schlechter Stil.

Tabelle

Sichtbarkeit
Modifikator Klasse Paket Erbe Andere
public Ja Ja Ja Ja
protected Ja Ja Ja Nein
unmarkiert Ja Ja Nein Nein
private Ja Nein Nein Nein