Do tej pory kompilatorowi nie przeszkadzało, ale chciałem dokładnie sprawdzić, czy w jakikolwiek sposób ustawiam się na niepowodzenie, stosując pewne metody w mojej klasie abstrakcyjnej.Czy klasy abstrakcyjne mają implementację w języku C#?
Odpowiedz
Klasa abstrakcyjna zwykle zawiera jedną lub więcej metod abstrakcyjnych. Więc tak, może być zaimplementowana jakaś metoda. Celem jest zmusić użytkownika do wdrożenia tych metod, aby obiekt działał. Czasami klasy abstrakcyjne są używane do zapewnienia "podstawowej" implementacji niektórych interfejsów, pozostawiając użytkownikowi końcowemu określenie tylko kluczowych metod. Możesz także mieć klasę abstrakcyjną bez jakiejkolwiek abstrakcyjnej metody: w tym przypadku twierdzisz, że musisz czerpać z tej klasy, aby jej użyć.
Tak. abstract
Nie można utworzyć instancji klasy (należy utworzyć instancję klasy , która dziedziczy po klasie abstrakcyjnej), ale może zawierać implementacje.
Doskonale nadaje się do zastosowania niektórych metod i pozostawiania innych abstrakcyjnych.
Jeśli wszystkie metody musiały być abstrakcyjne, równie dobrze można użyć do tego interfejsu.
Wszystko jest w porządku i jest dozwolone, ponieważ abstract class
ma co najmniej jeden element (metoda/właściwość) nie zaimplementowany, więc nie można utworzyć instancji.
an interface
jest również nazywany pure abstract class
co oznacza, że jest w 100% abstrakcyjny, więc nie pozwala określić żadnej implementacji.
należy pamiętać, że istnieje wiele artykułów i opinii na temat nieuzyskania konkretnej klasy z innej konkretnej klasy, ale tylko z abstrakcyjnych ... przynajmniej taki był trend w C++ do kilku lat temu, potem przeniosłem się do strony C#, zacząłem pracować więcej i nie miałem czasu na dalsze czytanie tych fajnych artykułów ... :)
Możesz mieć klasę abstrakcyjną bez żadnego abstrakcyjnego elementu w języku C# –
Powszechne jest stosowanie implementacji w klasach abstrakcyjnych.
Jeśli nie ma żadnej implementacji, należy rozważyć użycie interfejsu zamiast klasy abstrakcyjnej.
- 1. Klasy abstrakcyjne w kontenerach standardowych
- 2. C#: Klasy abstrakcyjne muszą implementować interfejsy?
- 3. Czy powinienem wywoływać implementację klasy podstawowej podczas przesłonięcia metody w języku C# dla ASP.NET?
- 4. JAXB i klasy abstrakcyjne
- 5. Czy protokoły mają domyślną implementację statycznych metod fabrycznych?
- 6. Dlaczego deklarować klasy statyczne jako zamknięte i abstrakcyjne w języku C#?
- 7. Testowanie jednostek Klasy abstrakcyjne w Groovy
- 8. Czy mogę podać sensowną nazwę klasy anonimowej w języku C#?
- 9. Czy w języku C# występuje odpowiednik zagnieżdżonej klasy statycznej Java?
- 10. Czy można utworzyć obiekt bez klasy w języku C#?
- 11. Czy mogą istnieć samodzielne funkcje w języku C# bez klasy?
- 12. Używanie klasy VB6 w języku C#
- 13. Dziedziczenie z klasy szablonu w języku C++
- 14. rodzajowych Java, rozszerzone rodzajowych i klasy abstrakcyjne
- 15. Pythona(), klasy abstrakcyjne Base i NotImplementedError
- 16. Domyślnie Dostępność klasy w języku C#
- 17. Wywoływanie System.Delegate obiekt klasy w języku C#
- 18. Tworzenie klasy Pythona w języku C#
- 19. Klasy abstrakcyjne i Spring MVC @ ModelAttribute/@ RequestParam
- 20. Czy zajęcia mają funkcję wirtualną? C++
- 21. Czy C# w języku angielskim jest uniwersalne?
- 22. Czy abstrakcyjne fabryki używają "nowego"?
- 23. Przestawianie metody abstrakcyjne Podczas tworzenia instancji w C#
- 24. Bajt Buddy: Utwórz implementację dla abstrakcyjnej klasy
- 25. W języku C++, czy mogę zapobiec tworzeniu klasy wynikowej przez klasy inne niż znajomi?
- 26. Czy funkcje C mają stały adres pamięci?
- 27. Dlaczego nie abstrakcyjne pola?
- 28. Get repozytorium jednostką docelową z klasy abstrakcyjne w doktrynie 2,5
- 29. Jak szybko sprawdzić, czy dwa obiekty przesyłania danych mają takie same właściwości w języku C#?
- 30. C# wirtualne (lub abstrakcyjne) metody statyczne
Można utworzyć klasę abstrakcyjną bez metod abstrakcyjnych, po prostu oznaczając klasę jako abstrakcyjną ... –
Klasa abstrakcyjna oznacza, że musi być dziedziczona, aby utworzyć instancję. Nie oznacza to, że powinien mieć abstrakcyjne metody, jak zauważył Kirill Polishchuk. – ken2k
@KirillPolishchuk Dziękuję Krylu, nigdy tego nie zauważyłem, poprawiłem odpowiedź. –