Hallo liebe Community,
ich lerne grade Java mit dem Buch "Java - als erste Programmiersprache" und bin irgendwie auf einen kleinen Widerspruch gestoßen oder vielleicht habe ich es nur falsch verstanden?
Es geht um die Kontravarianz von Übergabeparametern.
Laut dem Buch soll es möglich sein:
"Beim Überschreiben einer Methode darf also der Typ eines Übergabeparameters
nur durch den Typ einer Klasse ersetzt werden, die im
Vererbungsbaum des Typs des Übergabeparameters weiter oben
steht.
Bei dem Typ eines Übergabeparameters ist beim Überschreiben nur eine Generalisierung
erlaubt."
[Zitat : Java als erste Programmiersprache: Ein professioneller Einstieg in die Objektorientierung mit Java,
Springer Vieweg, 7. Auflage, p.476]
Ich hab das ganze mal ausprobiert mit Eclipse und den Klassen A und B wobei B von A erbt:
Laut Buch sollte das doch so funktionieren? Beim googlen habe ich gelesen, dass Java gar keine Ko/Kontravarianz bei Übergabeparametern unterstützt und somit kein Override zulässig ist sondern eine neue Methode angelegt wird sobald irgendetwas am Parameter anders ist.
Jetzt bin ich verwirrt ???:L
Würde mich über einen Tipp freuen
ich lerne grade Java mit dem Buch "Java - als erste Programmiersprache" und bin irgendwie auf einen kleinen Widerspruch gestoßen oder vielleicht habe ich es nur falsch verstanden?
Es geht um die Kontravarianz von Übergabeparametern.
Laut dem Buch soll es möglich sein:
"Beim Überschreiben einer Methode darf also der Typ eines Übergabeparameters
nur durch den Typ einer Klasse ersetzt werden, die im
Vererbungsbaum des Typs des Übergabeparameters weiter oben
steht.
Bei dem Typ eines Übergabeparameters ist beim Überschreiben nur eine Generalisierung
erlaubt."
[Zitat : Java als erste Programmiersprache: Ein professioneller Einstieg in die Objektorientierung mit Java,
Springer Vieweg, 7. Auflage, p.476]
Ich hab das ganze mal ausprobiert mit Eclipse und den Klassen A und B wobei B von A erbt:
Java:
//Methode der Klasse A
public void meth(String s) {
//...
}
//Methode der Klasse B
@Override
public void meth(Object o) { //Hier meckert Eclipse
//...
}
Laut Buch sollte das doch so funktionieren? Beim googlen habe ich gelesen, dass Java gar keine Ko/Kontravarianz bei Übergabeparametern unterstützt und somit kein Override zulässig ist sondern eine neue Methode angelegt wird sobald irgendetwas am Parameter anders ist.
Jetzt bin ich verwirrt ???:L
Würde mich über einen Tipp freuen