Junior — Middle
Milyen különbségek vannak az absztrakt osztály és az interfész között az objektumorientált programozásban?
sobes.tech MI
Válasz az MI-től
Az absztrakt osztály és az interfész külön mechanizmusok a szerződések és viselkedés leírására az OOP-ben, de kulcsfontosságú különbségekkel:
-
Absztakt osztály tartalmazhat absztrakt (megvalósítás nélküli) és konkrét metódusokat is. Lehet állapota (mezői). Az osztályok öröklik az absztrakt osztályt és felülírhatják a metódusokat.
-
Interfész csak a metódusok halmazát írja le megvalósítás nélkül, és nem tartalmaz állapotot. Az interfészt megvalósító osztálynak minden metódusát implementálnia kell.
Példák a különbségekre:
- Az absztrakt osztály akkor megfelelő, ha alapértelmezett megvalósítást és közös állapotot akarunk meghatározni az örökösök számára.
- Az interfész a képességek leírására szolgál, amelyeket különböző osztályok valósíthatnak meg, anélkül, hogy öröklési kapcsolatban lennének.
Például az Flyable interfész leírhatja a fly() metódust, míg az Bird absztrakt osztály tartalmazhatja a wingSpan mezőt és a sing() metódust megvalósítással.