Abstraktní třídy a rozhraní Podobnosti: (1) může být děděna (2) nelze instancovat (3) může obsahovat deklarace metod (4) Odvozená třída musí implementovat neimplementovanou metodu Kategorie: (1) Abstraktní základní třídy mohou definovat pole, vlastnosti a implementace metod. Rozhraní mohou definovat pouze atributy, indexery, události a deklarace metod a nemohou obsahovat pole. (2) Abstraktní třída je neúplná třída, která vyžaduje další zpřesnění, zatímco rozhraní je behaviorální norma. Vlastní rozhraní Microsoftu vždy obsahují schopné pole, které dokazuje, že jsou vyjádřením "Já to zvládnu..." ” (3) Rozhraní lze implementovat vícekrát a abstraktní třídy může zdědit pouze jedna osoba (4) Abstraktní třídy jsou více definovány mezi řadou úzce souvisejících tříd, zatímco většina rozhraní jsou volně související třídy, které všechny implementují určitou funkci (5) Abstraktní třídy jsou pojmy abstrahované ze série souvisejících objektů, takže odrážejí vnitřní společné rysy věcí; Rozhraní je funkční konvence definovaná tak, aby vyhovovala externím voláním, takže odráží vnější charakteristiky věcí (6) Rozhraní v podstatě nemá žádné specifické vlastnosti dědičnosti, pouze slibuje metody, které lze volat (7) Rozhraní lze použít k podpoře callbacků, ale dědičnost tuto funkci nemá (8) Specifické metody implementované abstraktními třídami jsou ve výchozím nastavení virtuální, ale rozhraní v třídě, která rozhraní implementuje, jsou ve výchozím nastavení nevirtuální, samozřejmě je můžete také deklarovat jako virtuální (9) Pokud abstraktní třída implementuje rozhraní, lze metodu v rozhraní namapovat na abstraktní třídu jako abstraktní metodu bez nutnosti její implementace a metoda v rozhraní může být implementována v podtřídě abstraktní třídy
|