klassen2:abstrakt:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
klassen2:abstrakt:start [2020/04/29 12:39] – Martin Pabst | klassen2:abstrakt:start [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Abstrakte Klassen ====== | ====== Abstrakte Klassen ====== | ||
+ | |||
+ | {{ youtube> | ||
+ | | ||
+ | | ||
Oft ist es nicht sinnvoll, Objekte einer Oberklasse zu instanzieren, | Oft ist es nicht sinnvoll, Objekte einer Oberklasse zu instanzieren, | ||
< | < | ||
- | <div class=" | + | <div class=" |
+ | |||
+ | <script type=" | ||
+ | Hund h = new Hund(" | ||
+ | Katze k = new Katze(" | ||
+ | h.schreibeName(); | ||
+ | k.schreibeName(); | ||
+ | </script> | ||
<script type=" | <script type=" | ||
Zeile 20: | Zeile 31: | ||
println(" | println(" | ||
} | } | ||
+ | |||
+ | | ||
+ | println(" | ||
+ | } | ||
+ | |||
} | } | ||
Zeile 48: | Zeile 64: | ||
===== Abstrakte Methoden ===== | ===== Abstrakte Methoden ===== | ||
- | Jedes Tier soll eine Methode '' | + | Jedes Tier soll eine Methode '' |
+ | Viel klarer wäre es doch, wenn die Klasse '' | ||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | Hund h = new Hund(" | ||
+ | Katze k = new Katze(" | ||
+ | |||
+ | Tier t; | ||
+ | t = h; | ||
+ | t.sagwas(); | ||
+ | |||
+ | t = k; | ||
+ | t.sagwas(); | ||
+ | |||
+ | </ | ||
+ | <script type=" | ||
+ | abstract class Tier { | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | this.art = art; | ||
+ | this.name = name; | ||
+ | } | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | println(" | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | <script type=" | ||
+ | class Hund extends Tier { | ||
+ | |||
+ | | ||
+ | super(" | ||
+ | } | ||
+ | |||
+ | | ||
+ | println(" | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | <script type=" | ||
+ | class Katze extends Tier { | ||
+ | |||
+ | | ||
+ | super(" | ||
+ | } | ||
+ | |||
+ | | ||
+ | println(" | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Die Deklaration der Methode | ||
+ | < | ||
+ | abstract public void sagwas(); | ||
+ | </ | ||
+ | in der Klasse '' | ||
+ | </ | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | Eine Klasse kann nur dann abstrakte Methoden enthalten, wenn sie selbst mit dem Schlüsselwort '' | ||
+ | </ | ||
+ | |||
+ | ===== Klassendiagramm ===== | ||
+ | <WRAP center round info 60%> | ||
+ | {{ : | ||
+ | Der UML-Standard sieht vor, dass die Bezeichner abstrakter Klassen und Methoden **in Schrägschrift** gesetzt werden. Vor den Klassenbezeichner kann wahlweise zusätzlich das Präfix "<< | ||
+ | </ |
klassen2/abstrakt/start.1588156793.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)