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