2012-02-03 13 views

Odpowiedz

14

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ć.

+5

Można utworzyć klasę abstrakcyjną bez metod abstrakcyjnych, po prostu oznaczając klasę jako abstrakcyjną ... –

+2

Klasa abstrakcyjna oznacza, że ​​musi być dziedziczona, aby utworzyć instancję. Nie oznacza to, że powinien mieć abstrakcyjne metody, jak zauważył Kirill Polishchuk. – ken2k

+0

@KirillPolishchuk Dziękuję Krylu, nigdy tego nie zauważyłem, poprawiłem odpowiedź. –

1

Tak. abstract Nie można utworzyć instancji klasy (należy utworzyć instancję klasy , która dziedziczy po klasie abstrakcyjnej), ale może zawierać implementacje.

1

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.

0

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 ... :)

+3

Możesz mieć klasę abstrakcyjną bez żadnego abstrakcyjnego elementu w języku C# –

6

Powszechne jest stosowanie implementacji w klasach abstrakcyjnych.

Jeśli nie ma żadnej implementacji, należy rozważyć użycie interfejsu zamiast klasy abstrakcyjnej.

Powiązane problemy