Middle
Mi a különbség az absztrakt osztály és az interfész között?
sobes.tech MI
Válasz az MI-től
Absztrakt osztály — ez egy olyan osztály, amely tartalmazhat megvalósított és absztrakt (megvalósítás nélküli) módszereket is. Alapként szolgál az örökléshez, és tartalmazhat állapotot (mezőket).
Interfész — egy szerződés, amely meghatározza egy módszerkészletet megvalósítás nélkül (klasszikus értelemben). Az interfészt megvalósító osztálynak minden módszert implementálnia kell.
Fő különbségek:
- Az absztrakt osztály tartalmazhat implementációt és állapotot, az interfész csak módszeraláírásokat (egyes nyelvekben az interfészek tartalmazhatnak alapértelmezett módszereket).
- Egy osztály csak egy absztrakt osztályból örökölhet, de több interfészt is megvalósíthat.
- Az absztrakt osztály részleges implementációt ad, az interfész csak szerződést.
Java példával:
abstract class Animal {
void eat() { System.out.println("Eszik"); }
abstract void sound();
}
interface Flyable {
void fly();
}
class Bird extends Animal implements Flyable {
void sound() { System.out.println("Csiripel"); }
public void fly() { System.out.println("Repül"); }
}