2013-06-13 20 views

Odpowiedz

13

Nie można utworzyć instancji interfejsu lub klasy abstrakcyjnej, ponieważ byłaby ona przeciwna modelowi zorientowanemu obiektowo.

Interfejsy oznaczają umowy - obietnica, że ​​osoba wdrażająca interfejs będzie w stanie wykonać wszystkie te czynności, zrealizować umowę.

Klasy abstrakcyjne są podobnym pomysłem, ponieważ reprezentują niespełnioną umowę, obietnicę, że będą mogły coś robić, z wyjątkiem różnych interfejsów, które mają określone funkcje lub pola, ale muszą zostać wypełnione, zanim będą mogły zostać użyte.

Po prostu, w dobrym programie zorientowanym obiektowo, nigdy nie powinieneś chcieć tworzyć klasy abstrakcyjnej lub interfejsu. Jeśli tak, projekt prawdopodobnie jest błędny.

(Anonimowe klasy są w rzeczywistości nie-abstrakcyjnymi wystąpieniami, tylko że nie trzeba im nadawać nazwy, więc wydają się być "surowymi interfejsami", ale w rzeczywistości są implementacją interfejsu, który nie ma nazwy To przynajmniej moje zrozumienie.)

+2

+1 za takie wspaniałe wyjaśnienie. – Ranjit

+0

Cóż, przynajmniej dla ciebie, genialny dla mnie .. +1 – Elltz

3

Oto podstawowe wyjaśnienie bez głębszej koncepcji.

  • Interface ma sposobu realizacji, więc nie ma celu do oznacz ją jako „nic” się stanie wywołać metodę
  • Abstract klasa może mieć abstract deklarację metoda, która jest jak metody interfejsu bez wdrożenia .
1

Nie można utworzyć instancji interfejsów ani klas abstrakcyjnych, ponieważ niektóre z ich metod mogą nie mieć żadnych definicji.

+0

Może wyjaśnić, że * brak * będzie z interfejsem. – ChiefTwoPencils

Powiązane problemy