Mal ne kleine Frage aus Interesse. Gibt es irgendwelche guten Gründe, warum man beim Überschreiben von Methoden keine kontravarianten Parameter zulässt. Ich meine so etwas:
Ich hab jetzt nicht unbedingt vor, sowas zu benutzen. In Java wirds das vermutlich auch nie geben, da es sicher zu einigen abwärtskompatiblen Problemen führen würde (siehe Einführung kovariantem Rückgabetyp).
Mich würde es nur interessieren, welche Überlegungen dazu geführt haben, und ob es da große Probleme geben würde, wenn es in einer beliebigen OOP-Sprache vorhanden wäre. Hab da schon ein bisschen gegooglet, aber keine gravierenden Gründe gefunden, die dagegen sprechen. Ein Fall war z.b.:
Die Frage ist, welche Methode überschreibt nun die Methode aus B. Da sehe ich aber z.b. kein Grund, warum die Methode nicht beide überschreibt.
Würde mich über ein paar Gedanken freuen.
lg Kevin
Java:
class A {
public void foo(Integer a) {
}
}
class B extends A {
@Override
public void foo(Number a) {
}
}
Mich würde es nur interessieren, welche Überlegungen dazu geführt haben, und ob es da große Probleme geben würde, wenn es in einer beliebigen OOP-Sprache vorhanden wäre. Hab da schon ein bisschen gegooglet, aber keine gravierenden Gründe gefunden, die dagegen sprechen. Ein Fall war z.b.:
Java:
class A {
public void foo(Integer a) {
}
public void foo(Double a) {
}
}
class B extends A {
@Override
public void foo(Number a) {
}
}
Würde mich über ein paar Gedanken freuen.
lg Kevin