Sobes.tech
Middle

Kāda ir atšķirība starp abstraktu klasi un saskarni?

sobes.tech AI

Atbilde no AI

Abstrakta klase — tā ir klase, kas var saturēt gan realizētās metodes, gan abstraktās (bez realizācijas) metodes. Tā kalpo kā pamats mantošanai un var saturēt stāvokli (laukus).

Saskarne (Interfeiss) — ir līgums, kas definē noteiktu metožu kopumu bez realizācijas (klasiskajā izpratnē). Klase, kas realizē interfeisu, ir pienākusi realizēt visas tā metodes.

Galvenās atšķirības:

  • Abstrakta klase var saturēt realizāciju un stāvokli, interfeiss — tikai metožu parakstus (dažās valodās, interfeisi var saturēt noklusējuma metodes).
  • Viena klase var manto tikai no viena abstrakta klases, bet var realizēt vairākus interfeisus.
  • Abstrakta klase nodrošina daļēju realizāciju, interfeiss — tikai līgumu.

Piemērs Java:

abstract class Animal {
    void eat() { System.out.println("Ēd"); }
    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("Lido"); }
}