Hallo erstmal. Ich programmiere seit 5 Jahren in Java, deswegen ist diese Frage mir etwas peinlich.
Wenn eine Superklasse eine Methode mit einer finalen Parameter deklariert, dann müssen die Unterklassen den Parameter nicht als final deklarieren, denn bei der Vererbung sind die Methoden der Vertrag bzw. der Rückgabetyp muss kompatibel und die Argumentliste gleich sein. Der final-Modifizierer beschränkt sich nur auf die Superklassen-Methode.
Also wäre dies hier gültig:
Umgekehrt funktioniert es genauso
Die beiden Beispiele sind also legitime Vererbungsbeispiele, oder habe ich einen Denkfehler? Ich habe die Beispiele erfolgreich kompilieren und ausführen können.
Wenn eine Superklasse eine Methode mit einer finalen Parameter deklariert, dann müssen die Unterklassen den Parameter nicht als final deklarieren, denn bei der Vererbung sind die Methoden der Vertrag bzw. der Rückgabetyp muss kompatibel und die Argumentliste gleich sein. Der final-Modifizierer beschränkt sich nur auf die Superklassen-Methode.
Also wäre dies hier gültig:
Java:
public class A {
public void a(final int i) {
}
}
public class B extends A {
public void a(int i) {
i = 4;
}
}
Umgekehrt funktioniert es genauso
Java:
public class A {
public void a(int i) {
}
}
public class B extends A {
public void a(final int i) {
}
}
Die beiden Beispiele sind also legitime Vererbungsbeispiele, oder habe ich einen Denkfehler? Ich habe die Beispiele erfolgreich kompilieren und ausführen können.