Würde das Folgende funktionieren?

artikel1.anzeigen() ;

Eine gute Antwort wäre:

Nein. Alles was dem Compiler mitgeteilt wurde war, dass artikel1 die Methoden der Schnittstelle Besteuerbar implementiert. Die anzeigen() Methode ist nicht in der Schnittstelle.

Typumwandlung

Wenn Sie eine Variable vom Typ Besteuerbar verwenden, fordern Sie den Aspekt "Besteuerbar" des Objekts an. Viele unterschiedliche Arten von Objekten könnten durch die Variable referenziert werden. (In einem größeren Programm könnte es "Besteuerbare" Klassen geben, die keine Waren sind.) Der Compiler kann nur die Methoden verwenden, von denen er weiß, dass sie ein Objekt haben muss — die der Schnittstelle.

Aber Sie können eine Typumwandlung verwenden, um dem Compiler mitzuteilen, dass in einer speziellen Anweisung des Programms die Variable auf ein Objekt einer bestimmten Klasse verweist:

  public static void main ( String[] args )
  {
    Besteuerbar artikel1 = new Buecher ( "Emma", 24.95, "Austin" );
    System.out.println( "Steuer fuer Artikel 1: " + artikel1.berechneSteuer() );

    ( (Buecher)artikel1 ).anzeigen();
  }

Dieses Programm ist nicht allzu sinnvoll, da alles ohne die Notwendigkeit einer Typumwandlung funktionieren würde, wenn die Variable artikel1 vom Typ Buecher wäre. Aber in Programmen mit einer komplizierteren Logik sind solche Konvertierungen manchmal notwendig.

FRAGE 16:

Warum werden die roten Klammern benötigt:

( (Buecher)artikel1 ).anzeigen();
Inhaltsverzeichnis