Konrad-Adenauer-Gymnasium Langenfeld

Informatik Grundkurs Q1

Schutzklasse protected

Um diese Problematik in einem objektorientierten System angemessen modellieren zu können, gibt es in Java - neben den Schutzklassen private und public - eine weitere Schutzklasse protected, mit der sich das Problem der benötigten Typ-Einschränkung recht elegant lösen lässt.

Schutzklasse: Funktion:
private Zugriff nur innerhalb der Klasse möglich
public Zugriff von außen möglich (= Export-Schnittstelle)
protected Zugriff von außen nicht möglich (wie private) Zugriff innerhalb von Unterklasse möglich (wie public)

Auf Methoden der Schutzklasse protected kann der Benutzer einer Klasse wie bei der Schutzklasse private nicht zugreifen. Für den Konstrukteur einer Unterklasse dieser Klasse sind diese Methoden jedoch zugänglich, haben also Merkmale der Schutzklasse public. Hiermit ist die Vorstellung verbunden, dass man Zustandsvariablen und Methoden vor "Fehlbedienung" durch den Benutzer der Klasse schützen will. Vom Konstrukteur einer neuen Unterklasse erwartet man dagegen, dass er bei der Konstruktion der Unterklasse besonders sorgfältig vorgeht und die möglichen Probleme der Oberklasse bei der Realisierung der Unterklasse angemessen berücksichtigt.

Grundprinzip:

  1. Methoden, die in einer Unterklasse nicht veröffentlicht sein sollen, haben in der Oberklasse die Schutzklasse protected .
  2. In der Unterklasse dürfen diese Methoden für die Implementation verwendet werden, bleiben aber protected, wenn ihre Verwendung einem Anwender der Klasse verwehrt sein soll.
  3. Werden die geschützen Methoden in einer (anderen) Unterklasse für den Anwender benötigt, wird diese als eine weitere, zusätzliche Unterklasse aus der Oberklasse abgeleitet, in der nur die geschützten Methoden veröffentlicht werden (Schutzklasse public).

Implementation der Klassenhierarchie von Listen:

  1. Wir erzeugen zur Klasse doppeltverketteteListe, die alle in den speziellen Listen unerwünschten Methoden veröffentlicht, eine Oberklasse Listenstruktur, die diese Methoden mit der Schutzklasse protected enthält.
  2. In der Unterklasse doppeltverketteteListe werden diese nun zur Verfügung gestellt, indem sie die Schutzklasse public erhalten.
  3. In der Unterklasse Stapel von Listenstruktur bleiben diese Methoden protected und stehen damit zwar für die Implementation der Klasse Stapel, nicht aber für den Anwender der Klasse Stapel zur Verfügung.

In UML ergibt sich dann folgende Struktur der Klassen zueinander.

Aufgaben:

  1. Erstellen Sie in einem neuen Projekt die Klassen Listenstruktur und doppeltverketteteListe. In der Klasse Listenstruktur erhalten alle Methoden die Schutzklasse protected, die in der Unterklasse Stapel nicht aufgerufen werden dürfen.
  2. Erstellen Sie die Klasse Stapel als Unterklasse von Listenstrukur und testen Sie den Auf- und Abbau eines Stapel in einem Testprogramm Stapel1.


© Ralph-Erich Hildebrandt, 04. Februar 2005