Middle
Mis vahe on abstraktsel klassil ja liideseil?
sobes.tech AI
Vastus AI-lt
Klass abstrakt — see on klass, mis võib sisaldada nii rakendatud meetodeid kui ka abstraktseid (ilma rakenduseta) meetodeid. See toimib alusena päriluseks ja võib sisaldada olekut (välju).
Liides (Interface) — on leping, mis määratleb meetodite kogumi ilma rakenduseta (klassikalises mõttes). Klass, mis liidest rakendab, peab rakendama kõiki selle meetodeid.
Peamised erinevused:
- Abstraktne klass võib sisaldada rakendust ja olekut, liides — ainult meetodi signatuure (mõnes keeles võivad liidesed sisaldada vaikimisi meetodeid).
- Klass võib pärida ainult ühest abstraktsest klassist, kuid võib rakendada mitmeid liideseid.
- Abstraktne klass pakub osalist rakendust, liides — ainult lepingut.
Näide Java keeles:
abstract class Animal {
void eat() { System.out.println("Toit"); }
abstract void sound();
}
interface Flyable {
void fly();
}
class Bird extends Animal implements Flyable {
void sound() { System.out.println("Kukub"); }
public void fly() { System.out.println("Lennata"); }
}