Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:ffit:3-jahr:java:learningunits:lu05:a [2025/09/15 10:42] – apeter | de:modul:ffit:3-jahr:java:learningunits:lu05:a [2025/09/16 06:52] (aktuell) – apeter | ||
|---|---|---|---|
| Zeile 9: | Zeile 9: | ||
| <code java> | <code java> | ||
| public interface Animal {...} | public interface Animal {...} | ||
| + | </ | ||
| + | <code java> | ||
| public interface Bird extends Animal {...} | public interface Bird extends Animal {...} | ||
| + | </ | ||
| + | <code java> | ||
| public class Penguin implements Bird {...} | public class Penguin implements Bird {...} | ||
| </ | </ | ||
| Zeile 17: | Zeile 19: | ||
| <code ecmascript> | <code ecmascript> | ||
| interface Animal {...} | interface Animal {...} | ||
| + | </ | ||
| + | <code ecmascript> | ||
| interface Bird extends Animal {...} | interface Bird extends Animal {...} | ||
| + | </ | ||
| + | <code ecmascript> | ||
| class Penguin implements Bird {...} | class Penguin implements Bird {...} | ||
| </ | </ | ||
| Zeile 28: | Zeile 32: | ||
| Eine abstrakte Klasse ist eine Zwischenform zwischen einem Interface und einer nichtabstrakten Klasse. Sie kann Methoden bereits implementieren oder ohne Implementation definieren. Von einer abstrakten Klasse kann keine direkte Instanz erstellt werden, nur von einer erbenden, nichtabstrakten Klasse. | Eine abstrakte Klasse ist eine Zwischenform zwischen einem Interface und einer nichtabstrakten Klasse. Sie kann Methoden bereits implementieren oder ohne Implementation definieren. Von einer abstrakten Klasse kann keine direkte Instanz erstellt werden, nur von einer erbenden, nichtabstrakten Klasse. | ||
| + | |||
| + | |||
| + | ^ UML ^ Java ^ | ||
| + | | {{: | ||
| + | <code java> | ||
| + | interface Animal { | ||
| + | void eat(); | ||
| + | } | ||
| + | </ | ||
| + | <code java> | ||
| + | abstract class Mammal implements Animal { | ||
| + | @Override | ||
| + | public void eat() { | ||
| + | System.out.println(" | ||
| + | } | ||
| + | |||
| + | abstract void makeSound(); | ||
| + | |||
| + | public void breathe() { | ||
| + | System.out.println(" | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | <code java> | ||
| + | class Dog extends Mammal { | ||
| + | @Override | ||
| + | void makeSound() { | ||
| + | System.out.println(" | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Abstrakte Klassen sind daher nützlich, wenn man gewisse Basisfunktionen in einer gemeinsamen Parentklasse implementieren will, aber wiederum andere Methoden erst in der jeweiligen Implementierungsklasse. | ||