Ich beschäftige mit dem Polymorphismus in java und komme leider nicht so richtig voran.
Es gibt ja einmal den statischen und den dynamischen Polymorphismus.
Den satischen Polymorphismus hab ich denke ich erstanden. Mit diesem ist es einfach möglich in EINER Klasse beliebig viele Methoden mit dem gleichen Namen zu schreiben, solange sich die Methodensignatur in der Parameterliste unterscheidet (Typ und/oder Anzahl).
Ein Beispiel-Code dazu sieht so aus:
Sollte denk ich mal stimmen.
Zu dem dynamischen Polymorphismus habe ich folgende Definition:
-Methoden haben komplett gleiche Signatur (Name & Parameterliste), nur Rumpf wird geändert
-Methode, welche in Superklasse definiert ist, wird in Subklasse überschrieben
-Subklasse blendet geerbtes Verhalten aus
Überschreiben:
-Subklasse erbt die Methode der Superklasse
-Methode die in Superklasse definiert ist, wird in Subklasse überschrieben
-Komplett gleiche Signatur, nur Rumpf wird geändert
-Subklasse blendet geerbtes Verhalten aus
-Verhalten kann so genauer an Subklasse angepasst werden
-Ausnahme: Methode nicht überschreibbar, wenn sie mit private, final oder static definiert wurde
Bis hier hin habe ich die Definition verstanden. Jetzt kommt der Teil den ich so gut wie garnicht verstehe. Dabei geht es um das Substitutionsprinzip, was anscheinend ein Teil des dynamischen Polymorphismus ausmacht.
Substitutionsprinzip:
-Objekttypen: polymorphe Referenzen - können potenziell verschiedene Typen annehmen
-den deklarierten Typ und alle seine Subtypen
-Objekte von Typ kann also zur Laufzeit substituiert (ersetzt) werden
-Figur kann Kreis, Rechteck, Dreieck oder Kugel sein
-Figur kann sich also entsprechend unterschiedlich verhalten
-erlaubt, weil Subklasse das Verhalten von Subklasse erbt
(Das mit "Figur kann Kreis, Rechteck..." ist vllt etwas verwirrend, weil die Defi. im Kontexts eines Codes erklärt wurde, den ich nicht habe.)
Meine Fragen:
Kann mir jemand diese Stichpunkte zum Substitutionsprinzip etwas verständlicher erläutern?
Es gibt ja einmal den statischen und den dynamischen Polymorphismus.
Den satischen Polymorphismus hab ich denke ich erstanden. Mit diesem ist es einfach möglich in EINER Klasse beliebig viele Methoden mit dem gleichen Namen zu schreiben, solange sich die Methodensignatur in der Parameterliste unterscheidet (Typ und/oder Anzahl).
Ein Beispiel-Code dazu sieht so aus:
Java:
public class PolyMainTest {
public static void main(String[] args){
System.out.println(add(1,2));
System.out.println(add(1,2,3));
}
public static int add(int a, int b){
return a+b;
}
public static int add(int a, int b, int c){
return a+b+c;
}
}
Sollte denk ich mal stimmen.
Zu dem dynamischen Polymorphismus habe ich folgende Definition:
-Methoden haben komplett gleiche Signatur (Name & Parameterliste), nur Rumpf wird geändert
-Methode, welche in Superklasse definiert ist, wird in Subklasse überschrieben
-Subklasse blendet geerbtes Verhalten aus
Überschreiben:
-Subklasse erbt die Methode der Superklasse
-Methode die in Superklasse definiert ist, wird in Subklasse überschrieben
-Komplett gleiche Signatur, nur Rumpf wird geändert
-Subklasse blendet geerbtes Verhalten aus
-Verhalten kann so genauer an Subklasse angepasst werden
-Ausnahme: Methode nicht überschreibbar, wenn sie mit private, final oder static definiert wurde
Bis hier hin habe ich die Definition verstanden. Jetzt kommt der Teil den ich so gut wie garnicht verstehe. Dabei geht es um das Substitutionsprinzip, was anscheinend ein Teil des dynamischen Polymorphismus ausmacht.
Substitutionsprinzip:
-Objekttypen: polymorphe Referenzen - können potenziell verschiedene Typen annehmen
-den deklarierten Typ und alle seine Subtypen
-Objekte von Typ kann also zur Laufzeit substituiert (ersetzt) werden
-Figur kann Kreis, Rechteck, Dreieck oder Kugel sein
-Figur kann sich also entsprechend unterschiedlich verhalten
-erlaubt, weil Subklasse das Verhalten von Subklasse erbt
(Das mit "Figur kann Kreis, Rechteck..." ist vllt etwas verwirrend, weil die Defi. im Kontexts eines Codes erklärt wurde, den ich nicht habe.)
Meine Fragen:
Kann mir jemand diese Stichpunkte zum Substitutionsprinzip etwas verständlicher erläutern?
Zuletzt bearbeitet: