Middle
Care este diferența dintre o clasă abstractă și o interfață?
sobes.tech AI
Răspuns de la AI
Clasa abstractă — este o clasă care poate conține atât metode implementate, cât și metode abstracte (fără implementare). Servește ca bază pentru moștenire și poate conține stare (câmpuri).
Interfață — este un contract care definește un set de metode fără implementare (în înțelesul clasic). Clasa care implementează interfața trebuie să implementeze toate metodele sale.
Diferențele principale:
- Clasa abstractă poate conține implementare și stare, interfața — doar semnături de metode (în unele limbaje, interfețele pot conține metode implicite).
- O clasă poate moșteni doar de la o singură clasă abstractă, dar poate implementa mai multe interfețe.
- Clasa abstractă oferă o implementare parțială, interfața — doar contractul.
Exemplu în Java:
abstract class Animal {
void eat() { System.out.println("Mănâncă"); }
abstract void sound();
}
interface Flyable {
void fly();
}
class Bird extends Animal implements Flyable {
void sound() { System.out.println("Ciripit"); }
public void fly() { System.out.println("Zboară"); }
}