Was ist Unterschied zwischen Polymorphie und Vererbung Java?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Interfaces nutzt du dann wenn du eine oder mehrere Funktionen "definiert" haben musst.Damit ist gemeint, dass das Interface nicht direkt den Typen deiner Klasse bestimmt. Eine Verwendung für ein Interface wäre zum Beispiel, dass man verschiedene Tiere hast wovon manche je eine spezielle Eigenschaft haben, aber nunmal nicht alle.Dein Interface würdest du dann so definieren:

public interface SpezielleEigenschaft {

public void doEigenschaft();

}

Alle Tiere die das interface implementieren, müssen jeweils eine eigene Version der Funktion haben. Wenn du dann eine Liste von deinen Tieren hast kannst du mit instanceof Abfragen ob sie das Interface implementieren, wenn sie das tun kannst du mit tierObjekt.doEigenschaft(); ihre Eigenschaft auslösen, oder eben noch andere Dinge tun.
Ich finde ein großer unterschied zur Vererbung ist, dass du damit nicht so viele Unterklassen erstellen müsstest. Außerdem wirkt sich das Interface nicht auf deine "Hierarchie" an parent- und child klassen aus.

Einen wirklichen Grund warum man Interfaces statt Vererbung nutzen sollte, kann ich dir nicht wirklich nennen, jedoch bin ich der Meinung, dass es sehr viel schöner, übersichtlicher und professioneller ist, wenn man Interfaces benutzt.

Woher ich das weiß:eigene Erfahrung
FaTech  04.03.2024, 13:34

Ich kann ein Beispiel nennen mit Interfaces:

ich habe mal eine Übersetzung gebaut (Multi-Sprach-App). Dabei gibt es verschiedenen Klassen zu jeder Sprache. Damit die identisch sind, gibt es dann ein interface. Würde man eine Klasse dahinter nutzen, so würden ja Standardwerte gesetzt. Dann wäre nur die Frage, wenn Klasse Englisch die Standard base Klasse wäre, warum sollte deutsch Englischen Inhalt haben? Zu dem kommt hinzu, dass dann alles kompiliert wird und einige Sprache vergessen werden könnten. Beim Interface hat man die Grundstruktur, aber ohne werte, somit ist kein Standardwert vorhanden und der kompiler achtet darauf, dass alles eingebunden wird. (Dieses Beispiel stammt aus C#, sollte sich aber übernehmen lassen)

0
FaTech  04.03.2024, 13:37
@FaTech

Ich hoffe, ich habe dein "kann ich dir nicht nennen" korrekt verstanden. Nur deshalb mein Beispiel. Ansonsten ignorieren 😅

0