Junior — Middle
Ar galima vienoje klasėje įgyvendinti dvi sąsajas, iš kurių kiekviena turi numatytąją įgyvendinimo metodą?
sobes.tech AI
Atsakymas iš AI
Taip, Java klasė gali įgyvendinti kelis sąsajos (interface) vienu metu, net jei šios sąsajos turi numatytus (default) metodus. Tačiau, jei dvi sąsajos turi metodus su ta pačia signatūra, klasė turi perrašyti šį metodą ir aiškiai nurodyti, kurį įgyvendinimą naudoti arba pateikti savo.
Pavyzdys:
interface A {
default void hello() {
System.out.println("Labas iš A");
}
}
interface B {
default void hello() {
System.out.println("Labas iš B");
}
}
class C implements A, B {
@Override
public void hello() {
// Aiškiai pasirenkame įgyvendinimą arba rašome savo
A.super.hello();
// arba B.super.hello();
}
}
Taip sprendžiamas numatytų (default) metodų konfliktas perrašant jį klasėje.