Richard: Extend, Implement, Abstract

Beitrag lesen

Hallo Michilee,

extend: Alle Methode von abgeleiteten Klasse nutzbar, überschreibbar, Variablen nutzbar

Nicht alle, sondern nur die mit einer Sichtbarkeit >= protected.

interface: Alle Methoden von Interface müssen implementiert werden. Keine fertigen Methoden nutzbar (Verstehe ich nicht??). Variablen nutzbar

In einem Interface werden Methoden definiert, aber nicht implementiert. Die Implementierung dieser Methoden übernimmt die Klasse, die das Interface mit dem Schlüsselwort implements implementiert.

abtract: Sobald eine Methode abstract ganze Klasse abstract. Variablen nutzbar. Abstracte Methoden müssen implementiert werden, die restlichen nicht und können direkt genutzt werden.

Soweit richtig.

  1. Wie nutze ich nochmal von anderen Klassen private oder public (oder final) Variablen? Ohne sie andere Klasse zu implementieren, oder von Ihr abgeleitet zu sein, wird man womöglich die Variablenicht nutzen können ne?

Private Variablen sind außerhalb der Klasse nicht sichtbar. Ist eine Variable oder Methode als protected deklariert, kannst du darauf nur innerhalb der Vererbungshierarchie zugreifen. Öffentliche bzw. paketsichtbare Variablen und Methoden rufst du auf einem Objekt, bzw. statische Variablen/Methoden auf der Klasse auf.

  1. Wo ich so meine Probleme habe, wenn es zum Beispiel heißt, dass wenn ich eine Klasse geschrieben habe und sie seriazible sein muss, dass ich einfach meine Klasse von seriazible ableite. Was bringt das? Vor allem, wenn ich nicht weiß, was die Klasse macht, von der ich abgeleitet worden bin.

Wenn die Klasse ein Interface implementiert, stellt sie damit nach außen hin sicher, dass sie bestimmte Fähigkeiten und auch gleichzeitig einen bestimmten Typ hat, da sie ja das Interface und damit dessen sämtliche Methoden implementiert.

Serializable ist ein schlechtes Beispiel, da es genau keine Methoden vorschreibt. Sieh dir beispielsweise das Interface java.lang.Comparable an. Es schreibt eine Methode compareTo() vor, mit deren Hilfe eine Ordnungsrelation auf der Klasse definiert wird. Die Objekte dieser Klasse sind dann also vergleichbar (engl. comparable). Ein Benutzer dieser Klasse sieht nun von außen, dass sie das Interface Comparable implementiert, und kann sich somit darauf verlassen, dass er auf dieser Klasse die compareTo()-Methode aufrufen kann. Außerdem kann jeder Methode, die ein Comparable als Parameter erwartet, nun auch ein Objekt deiner Klasse übergeben werden (Stichwort Polymorphie).

Grüße
Richard