Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


4.12.3

Interfaces vs. Mehrfachvererbung


Zwischen den Interfaces in Java und der Mehrfachvererbung in C++ gibt es einen signifikanten Unterschied: Durch Interfaces können ausschließlich abstrakte Methoden und Konstanten vererbt werden. Diese abstrakten Methoden müssen dann in der Klasse ausprogrammiert werden. Bei Mehrfachvererbung dagegen kann eine Klasse beliebige Datenelemente und »gebrauchsfertige« Methoden von mehreren Klassen erben.

Mit dem Interface-Konzept kann eine Klasse nur von einer Klasse bereits implementierte Methoden erben.

Auch wenn durch das Interface-Konzept die meisten Schwierigkeiten der Mehrfachvererbung von C++ vermieden werden, gibt es noch einen Fall, in dem es zu Problemen kommen kann: Bei Klassen, die mindestens zwei Interfaces implementieren, ist es erlaubt, dass zwei dieser Interfaces eine Methode mit identischer Signatur haben. Falls diese Methode innerhalb der Interfaces aber eine völlig unterschiedliche Semantik hat, wird dieselbe Methodenimplementierung von den Benutzern beider Interfaces aufgerufen, d. h., für einen der beiden Benutzer führt die Implementierung der Methode nicht die Aktionen aus, die erwartet werden. Das Auffinden eines solchen Fehlers wird dadurch erschwert, dass es sich um einen logischen Fehler handelt, der vom Compiler nicht aufgedeckt wird.

Unproblematischer sind hier Konstanten mit gleichem Namen: Da sie bei Interfaces grundsätzlich statisch sind, können sie auch mit dem Namen des Interface qualifiziert werden:
  interface A {
    int CONST = 1;
  }
  
  interface B {
    String CONST = "Hi!";
  }
  
  public class ConstTest implements A, B {
  ...
  System.out.println(B.CONST);
  ...
  }


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.