Middle
Kuo skiriasi abstrakti klasė nuo sąsajos?
sobes.tech AI
Atsakymas iš AI
Abstracti klasė — tai klasė, kuri gali turėti tiek įgyvendintus metodus, tiek abstrakčius (be įgyvendinimo) metodus. Ji tarnauja kaip pagrindas paveldėjimui ir gali turėti būseną (laukus).
Sąsaja (Interface) — tai sutartis, kuri apibrėžia metodų rinkinį be įgyvendinimo (klasikinėje sampratoje). Klasė, įgyvendinanti sąsają, privalo įgyvendinti visus jos metodus.
Pagrindiniai skirtumai:
- Abstrakti klasė gali turėti įgyvendinimą ir būseną, sąsaja — tik metodų parašus (kai kuriose kalbose, sąsajos gali turėti numatytus metodus).
- Viena klasė gali paveldėti tik iš vienos abstrakčios klasės, bet gali įgyvendinti kelias sąsajas.
- Abstrakti klasė suteikia dalinį įgyvendinimą, sąsaja — tik sutartį.
Pavyzdys Java kalba:
abstract class Animal {
void eat() { System.out.println("Valgo"); }
abstract void sound();
}
interface Flyable {
void fly();
}
class Bird extends Animal implements Flyable {
void sound() { System.out.println("Čirč"); }
public void fly() { System.out.println("Skraido"); }
}