Sobes.tech
Middle

Mi a különbség a protokollok és az osztályok között az absztrakt osztályok kontextusában?

sobes.tech MI

Válasz az MI-től

A protokollok meghatároznak egy követelményeket (módszerek, tulajdonságok) tartalmazó halmazt, amelyeket a típusoknak (osztályoknak, szerkezeteknek, felsorolásoknak) meg kell felelniük. Nem nyújtanak kész megvalósítást. Az osztályok sablonként szolgálnak az objektumok létrehozásához, amelyek állapotot (tulajdonságokat) és viselkedést (módszereket) tartalmaznak.

Az absztrakt osztályok kontextusában (amelyek Swiftben nem léteznek kifejezetten):

  • Absztrakt osztály imitálása osztály segítségével: Létrehozunk egy osztályt, amely öröklődhet. Néhány módszer fatalError-ként megjelölhető vagy üres implementációval rendelkezhet, várva, hogy felülírják az alosztályok. Az állapot (tulajdonságok) lehet közös minden örökös számára.
  • Absztrakt osztály imitálása protokoll segítségével: Egy protokollt határozunk meg, amely egy halmazt tartalmaz a szükséges módszerekből és tulajdonságokból. Azok a típusok, amelyek elfogadják ezt a protokollt, saját megvalósítást kell, hogy adjanak minden követelményre. A protokoll nem tartalmazhat állapotot önmagában, csak követelményeket.

Fő különbség: az osztályok alapértelmezett megvalósítást és állapotot nyújthatnak, míg a protokollok csak az interfészt írják le, megvalósítás és állapot nélkül. Az absztrakció protokollon keresztüli imitálása rugalmasabb, mivel egy protokollt nemcsak osztályok, hanem szerkezetek és felsorolások is elfogadhatnak.