Hallo!
Ich hätte da mal eine Anfängerfrage zu Polymorphismus.
Ich leite eine Klasse B ab von einer Klasse A. Anschliessend überschreibe ich irgendeine Methode in B, die von A übernommen wurde.
Dann instatiiere ich ein Objekt B mit dem Typ A, also ClassA obj = new ClassB();
Jetzt kann ich auf obj ja problemlos die überschriebene Methode aufrufen wegen late binding.
1. Ist das im wesentlichen Polymorphie, oder gibts da noch viel mehr zu verstehen?
Ich weiß, dass das z.b. praktisch ist wenn man Methodenparameter allgemein halten möchte, also z.B. die Klasse Auto als Parameter erlaubt und dann Subklassen wie Kleinwagen, Limousine etc. übergeben kann.
Oder ein Array vom Typ Auto sammelt die Subklassen und man kann beim durchlaufen des Arrays in einer Schleife auf jedes die Methode losfahren aufrufen, egal ob Kleinwagen oder Limousine. Ist es das im wesentlichen?
2. Dann implemetiere ich noch eine neue Methode in B. Die neue Methode aus B lässt sich aber nicht aufrufen, diese kennt A ja nicht. Was wäre aber, wenn ich die überschriebene dazu anweise, die neue Methode intern aufzurufen, geht das?
Also Class A obj = new ClassB();
obj.überschriebeneMethode(); // geht wegen late binding
obj.neueMethode(); // geht nicht weil nicht bekannt in ClassA
Was aber bei
obj.überschriebeneMethode();
und
public void überschriebeneMethode() {
neueMethode();
}
Danke!
Ich hätte da mal eine Anfängerfrage zu Polymorphismus.
Ich leite eine Klasse B ab von einer Klasse A. Anschliessend überschreibe ich irgendeine Methode in B, die von A übernommen wurde.
Dann instatiiere ich ein Objekt B mit dem Typ A, also ClassA obj = new ClassB();
Jetzt kann ich auf obj ja problemlos die überschriebene Methode aufrufen wegen late binding.
1. Ist das im wesentlichen Polymorphie, oder gibts da noch viel mehr zu verstehen?
Ich weiß, dass das z.b. praktisch ist wenn man Methodenparameter allgemein halten möchte, also z.B. die Klasse Auto als Parameter erlaubt und dann Subklassen wie Kleinwagen, Limousine etc. übergeben kann.
Oder ein Array vom Typ Auto sammelt die Subklassen und man kann beim durchlaufen des Arrays in einer Schleife auf jedes die Methode losfahren aufrufen, egal ob Kleinwagen oder Limousine. Ist es das im wesentlichen?
2. Dann implemetiere ich noch eine neue Methode in B. Die neue Methode aus B lässt sich aber nicht aufrufen, diese kennt A ja nicht. Was wäre aber, wenn ich die überschriebene dazu anweise, die neue Methode intern aufzurufen, geht das?
Also Class A obj = new ClassB();
obj.überschriebeneMethode(); // geht wegen late binding
obj.neueMethode(); // geht nicht weil nicht bekannt in ClassA
Was aber bei
obj.überschriebeneMethode();
und
public void überschriebeneMethode() {
neueMethode();
}
Danke!