Middle
Czym różni się klasa abstrakcyjna od interfejsu?
sobes.tech AI
Odpowiedź od AI
Klasa abstrakcyjna — to klasa, która może zawierać zarówno zaimplementowane metody, jak i metody abstrakcyjne (bez implementacji). Służy jako podstawa do dziedziczenia i może zawierać stan (pola).
Interfejs — to kontrakt, który definiuje zestaw metod bez implementacji (w klasycznym rozumieniu). Klasa implementująca interfejs musi zaimplementować wszystkie jego metody.
Główne różnice:
- Klasa abstrakcyjna może zawierać implementację i stan, interfejs — tylko sygnatury metod (w niektórych językach interfejsy mogą zawierać metody domyślne).
- Klasa może dziedziczyć tylko po jednej klasie abstrakcyjnej, ale może implementować wiele interfejsów.
- Klasa abstrakcyjna zapewnia częściową implementację, interfejs — tylko kontrakt.
Przykład w Java:
abstract class Animal {
void eat() { System.out.println("Jedzenie"); }
abstract void sound();
}
interface Flyable {
void fly();
}
class Bird extends Animal implements Flyable {
void sound() { System.out.println("Ćwir ćwir"); }
public void fly() { System.out.println("Latanie"); }
}