Witajcie
Mam oto takie pytanie z rozmowy kwalifikacyjnej - Co jeśli interfejs dziedziczy po innym interfejsie i w obu tworach jest metoda o takiej samej sygnaturze? Która metoda ma pierwszeństwo?
To samo odnośnie nadklasy.
0
1
No a próbowałeś zrobić to w swoim ide? :) tworzysz 2 interfejsy, drugi dziedziczy pierwszy i nadpisuje jego metodę domyślną. Potem wywołujesz w klasie innej. Przecież to żaden problem :) Sam zobaczysz co się stanie.
3
Klasa czy interfejs dziedziczący nadpisują
metodę swojej bazy
, nie ma tu specjalnie nad czym się zastanawiać.
Ciekawsze byłoby pytanie o metody domyślne w interfejsie i dziedziczenie pod dwóch interfejsach z taką metodą o identycznej sygnaturze...
interface B {
default int fun(int x) {
return x;
}
}
interface C {
default int fun(int x) {
return x + 1;
}
}
public class A implements B, C {
}
Polecam sprawdzić, a także co się stanie jak w klasie A
chciałbyś zawołać super.fun(val)
0
2
@Commander300:
Twoja klasa A powinna implementować metodę fun z modyfikatorem public (czemu?), a nie wywoływać ot tak w środku
class A implements B, C {
public int fun(int x) { // nie zadziała bo ...
return super.fun(x);
}
public int funInCVersion(int x) { // poprawne wywołanie implementascji interfejsu C
return C.super.fun(x);
}
public int funInBVersion(int x) { // poprawne wywołanie implementascji interfejsu B
return B.super.fun(x);
}
}
Może Ci ten przykład rozjaśni coś niecoś