klassen2:abstrakt:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | klassen2:abstrakt:start [2024/08/31 10:03] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Abstrakte Klassen ====== | ||
+ | |||
+ | {{ youtube> | ||
+ | | ||
+ | | ||
+ | Oft ist es nicht sinnvoll, Objekte einer Oberklasse zu instanzieren, | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | Hund h = new Hund(" | ||
+ | Katze k = new Katze(" | ||
+ | h.schreibeName(); | ||
+ | k.schreibeName(); | ||
+ | </ | ||
+ | |||
+ | <script type=" | ||
+ | class Tier { | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | this.art = art; | ||
+ | this.name = name; | ||
+ | } | ||
+ | |||
+ | | ||
+ | println(" | ||
+ | } | ||
+ | |||
+ | | ||
+ | println(" | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | </ | ||
+ | <script type=" | ||
+ | class Hund extends Tier { | ||
+ | |||
+ | | ||
+ | super(" | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | <script type=" | ||
+ | class Katze extends Tier { | ||
+ | |||
+ | | ||
+ | super(" | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Abstrakte Methoden ===== | ||
+ | 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 "<< | ||
+ | </ | ||