Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Letzte Überarbeitung Beide Seiten der Revision
schule:klassen:2018:10bc:kap11 [2019/03/18 14:11]
martin [Abstrakte Klassen]
schule:klassen:2018:10bc:kap11 [2019/03/18 14:17]
martin
Zeile 23: Zeile 23:
 } }
        
-    public String ​toString(){+    public String ​gibDaten(){
         String s = "Daten des Fahrzeugs:​\n";​         String s = "Daten des Fahrzeugs:​\n";​
         s = s + "​Marke:​ " + marke + "​\n";​         s = s + "​Marke:​ " + marke + "​\n";​
Zeile 44: Zeile 44:
     }     }
     ​     ​
-    public String ​toString(){+    public String ​gibDaten(){
         String s = super.toString();​         String s = super.toString();​
         s = s + "​Klimaanlage:​ " + hatKlimaanlage;​         s = s + "​Klimaanlage:​ " + hatKlimaanlage;​
Zeile 64: Zeile 64:
     }     }
     ​     ​
-    public String ​toString(){+    public String ​gibDaten(){
         String s = super.toString();​         String s = super.toString();​
         s = s + "​Beisitzer:​ " + hatBeisitzer;​         s = s + "​Beisitzer:​ " + hatBeisitzer;​
Zeile 73: Zeile 73:
  
 ===== Polymorphismus ===== ===== Polymorphismus =====
-Die Klassen Auto und Motorrad überschreiben beide die Methode ​toString() der Klasse Fahrzeug. Hat man eine Variable mit Datentyp Fahrzeug, so kann sie auf ein Objekt der Klasse Fahrzeug, ​ Auto oder Motorrad zeigen. \\  +Die Klassen Auto und Motorrad überschreiben beide die Methode ​gibDaten() der Klasse Fahrzeug. Hat man eine Variable mit Datentyp Fahrzeug, so kann sie auf ein Objekt der Klasse Fahrzeug, ​ Auto oder Motorrad zeigen. \\  
-Ruft man für das Objekt die Klasse ​toString() auf, so wird – je nach Objekt – die Methode der Klasse Fahrzeug, Auto oder Motorrad ausgeführt.+Ruft man für das Objekt die Klasse ​gibDaten() auf, so wird – je nach Objekt – die Methode der Klasse Fahrzeug, Auto oder Motorrad ausgeführt.
 <WRAP center round info 60%> <WRAP center round info 60%>
 **Merke:** \\  **Merke:** \\ 
Zeile 95: Zeile 95:
             ​             ​
             Fahrzeug f = liste[i];             Fahrzeug f = liste[i];
-            System.out.println(f.toString()); // Hier passiert die Magie!+            System.out.println(f.gibDaten()); // Hier passiert die Magie!
             System.out.println();​             System.out.println();​
         ​         ​
Zeile 108: Zeile 108:
 </​code>​ </​code>​
  
-Der Methodenaufruf ''​f.toString() ''​ ruft beim ersten und dritten Objekt die Methode ''​toString()''​ der Klasse ''​Auto''​ auf, beim zweiten Objekt die Methode ''​toString()''​ der Klasse ''​Motorrad''​.+Der Methodenaufruf ''​f.gibDaten() ''​ ruft beim ersten und dritten Objekt die Methode ''​gibDaten()''​ der Klasse ''​Auto''​ auf, beim zweiten Objekt die Methode ''​gibDaten()''​ der Klasse ''​Motorrad''​.
  
  
Zeile 119: Zeile 119:
  
 === Umgestaltung des obigen Beispiels === === Umgestaltung des obigen Beispiels ===
-Im obigen Beispiel ist es nicht sinnvoll, ein Objekt der Klasse Fahrzeug instanzieren. Gleichzeitig wollen wir jede Unterklasse von Fahrzeug dazu zwingen, die Methode ​toString() zu implementieren.+Im obigen Beispiel ist es nicht sinnvoll, ein Objekt der Klasse Fahrzeug instanzieren. Gleichzeitig wollen wir jede Unterklasse von Fahrzeug dazu zwingen, die Methode ​gibDaten() zu implementieren.
  
 +
 +==== Die Klasse Fahrzeug (Oberklasse):​ ====
 +<code java>
 +abstract public class Fahrzeug
 +{
 +    private int radAnzahl;
 +    private double leistung;
 +    private String marke;
 +    ​
 +    public Fahrzeug(String marke, int radAnzahl, double leistung){
 +        this.marke = marke;
 +        this.radAnzahl = radAnzahl;
 +        this.leistung = leistung;
 +}
 +   
 +    protected String gibFahrzeugdaten(){
 +        String s = "Daten des Fahrzeugs:​\n";​
 +        s = s + "​Marke:​ " + marke + "​\n";​
 +        s = s + "​Leistung:​ " + leistung + "​\n";​
 +        s = s + "​Radanzahl:​ " + radAnzahl + "​\n";​
 +        return s;
 +    }
 +    ​
 +    abstract public String gibDaten();
 +}
 +</​code>​
 +
 +==== Die Klasse Auto (Unterklasse):​ ====
 +<code java>
 +public class Auto extends Fahrzeug
 +{
 +    private boolean hatKlimaanlage;​
 +    ​
 +    public Auto(String marke, boolean hatKlimaanlage,​ double leistung){
 +        super(marke,​ 4, leistung);
 +        this.hatKlimaanlage = hatKlimaanlage;  ​
 +    }
 +    ​
 +    abstract public String gibDaten(){
 +        String s = gibFahrzeugdaten();​
 +        s = s + "​Klimaanlage:​ " + hatKlimaanlage;​
 +        return s;
 +    }
 +}
 +
 +</​code>​
 +==== Die Klasse Motorrad (Unterklasse):​ ====
 +<code java>
 +public class Motorrad extends Fahrzeug
 +{
 + private boolean hatBeisitzer;​
 +    ​
 +       ​public Motorrad(String marke, boolean hatBeisitzer,​ double leistung){
 +        super(marke,​ 2, leistung);
 +        ​
 +        this.hatBeisitzer = hatBeisitzer;  ​
 +    }
 +    ​
 +    public String toString(){
 +        String s = gibFahrzeugdaten();​
 +        s = s + "​Beisitzer:​ " + hatBeisitzer;​
 +        return s;
 +    }
 +}
 +</​code>​
  
Drucken/exportieren
QR-Code
QR-Code schule:klassen:2018:10bc:kap11 (erstellt für aktuelle Seite)