Sobes.tech
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"); }
}