StartseiteProgrammierungJava

Abstrakte Klasse

08. JULI 2011
von Jörg
Programmierung - Java

Man kann in einer Klasse normale Methoden und Variablendefinitionen haben, aber auch abstrakte Methoden deklarieren, die von den Subklassen implementiert werden müssen.
Sobald eine Methode abstrakt gehalten werden soll, wird diese und die Klasse selbst mit abstract deklariert. Solche Klassen können aber nicht instanziert werden, da ja die abstrakten Methoden nicht implementiert wurden. Allerdings müssen die abstrakten Methoden, die in der Superklasse deklariert wurden, in der abgeleiteten Klasse implementiert werden.

01
02
03
04
05
abstract class Karte
{
  String empfaenger;             // Name des Empfängers
  public abstract void gruss();  // abstrakte gruss() Methode
}

Der Vorteil besteht darin das Programme dadurch überschaulicher zu programmieren sind und auch weniger Schreibarbeit anfällt. Somit kann man mehrer Objektarten von Karten in eine Referenzvariable bzw. Array vom Typ Karte speichern und bei dem Ausführen der Methode objekt.gruss(); bekommt man immer die passende Ausgabe des jeweiligen Objekts.
Dies nennt man auch Polymorphie (Vielseitigkeit), eine Methode aufrufen, und die Klasse bestimmt was ausgegeben wird.
Polymorphie einfacher erklärt:
Wenn eine Klasse A von einer anderen Klasse B erbt, oder ein Interface B implementiert, dann ist jedes Objekt der Klasse A auch gleichzeitig ein Objekt vom Typ B.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Geburtstag extends Karte
{  int alter;

   public Geburtstag ( String e, int jahre )
   {  empfaenger = e;
      alter = jahre;
   }

   public void gruss()
   {  System.out.println("Dear " + empfaenger);
      System.out.println("alles Gute zum " + alter + ". Geburtstag.");
   }
}

class Valentin extends Karte
{  int kuesse;

   public Valentin ( String e, int k )
   {  empfaenger = e;
      kuesse     = k;
   }

   public void gruss()
   {  System.out.println("Dear " + empfaenger + ", ");
      System.out.println("herzliche Gruesse und Kuesse, ");
      for ( int j = 0; j < kuesse; j++ )
        System.out.print("X");
   }
}

Interfaces

Interfaces ähneln den abstrakten Klassen, mit folgenden Unterscheidungen:

  • In Interfaces können keine Methoden implementiert werden.
  • Es können nur konstante Variablen mit dem Schlüsselwort final deklariert werden.
  • Es bedarf nicht der Verwendung von dem Schlüsselwort abstract, da in Interfaces alle Methoden abstrakt sind.
  • Anstatt extends zur Verdeutlichung der Vererbung, wird bei Interfaces implements benutzt.
  • Eine Subklasse kann von mehreren Interfaces erben, nicht wie bei einer normalen abstrakten Klasse nur von einer. (Einfachvererbung)

Hinterlasse einen Kommentar

Ein Frosch der sich an der Seite festhält