Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
schule:klassen:2018:10bc:kap11 [2019/03/18 14:11]
martin [Abstrakte Klassen]
schule:klassen:2018:10bc:kap11 [2019/03/18 14:21]
martin [Die Klasse Motorrad (Unterklasse):]
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>​
  
  
 +===== Zugriffsmodifikatoren (Access Modifiers) =====
 +Die Schlüsselworte ''​public'',​ ''​protected''​ und ''​private''​ regeln die Sichtbarkeit von Methoden:
 +  * ''​public''​-Methoden sind von jeder Klasse aus sichtbar.
 +  * ''​protected''​-Methoden sind nur in der Klasse selbst und in allen Unterklassen der Klasse sichtbar.
 +  * ''​private''​-Methoden sind nur in der Klasse selbst sichtbar.
Drucken/exportieren
QR-Code
QR-Code schule:klassen:2018:10bc:kap11 (erstellt für aktuelle Seite)