C# klasa abstrakcyjna

C# klasa abstrakcyjna

Klasa abstrakcyjna dotyczy procesu abstrakcji. Jest to zjawisko, w którym ukryte są szczegóły dowolnej metody i pokazano tylko funkcjonalność. To nie jest pełna implementacja. Nie możemy bezpośrednio utworzyć instancji klasy abstrakcyjnej; Można go tworzyć bez użycia metody abstrakcyjnej. Podstawowym celem klasy abstrakcyjnej jest zaoferowanie przewodnika dla wszystkich pochodnych klas odziedziczonych przez nią.

Składnia dla klasy abstrakcyjnej:

Streszczenie próbki klasy

„Streszczenie” jest wykorzystywane do generowania klasy abstrakcyjnej. Podczas gdy w przypadku funkcji abstrakcyjnej zawiera nikt nie zadeklarowany tylko w klasie. Metoda abstrakcyjna jest stosowana wewnątrz pochodnej lub można powiedzieć we wszystkich klasach nie-ABSTRACT, używając słowa kluczowego „zastąpienie”. Za pomocą tego słowa kluczowego metoda abstrakcyjna nie znajduje się w stanie abstrakcji; może być używany jako funkcja zwykła. Klasa pochodna, która jest dzieckiem klasy abstrakcyjnej, może zastąpić te same metody abstrakcyjne.

Składnia dla metody abstrakcyjnej:

Publiczne streszczenie void smp ();

Struktura klasy abstrakcyjnej

Klasa abstrakcyjna jest stosowana głównie w procesie dziedzictwa. Struktury nie mogą zastąpić żadnej klasy abstrakcyjnej. Klasa abstrakcyjna nie jest na korzyść wielu dziedziczeń. Podobnie klasę abstrakcyjną nie może być deklarowana jako klasa statyczna, ponieważ klasę statyczną nie można wyprowadzić.

Przykład 1

Aby wdrożyć koncepcję klasy abstrakcyjnej, stworzyliśmy przykładowy program. W którym użyliśmy próbki klasowej z abstrakcją słów kluczowych. W ramach klasy stwierdzono metodę abstrakcyjną. Klasa abstrakcyjna zawsze ma abstrakcyjną metodę.

Public Streszczenie klasa próbka ()
Publiczne streszczenie void smp] ();

Ponieważ definiujemy jedynie funkcjonalność abstrakcyjnych metod wewnątrz klasy abstrakcyjnej, zamiast wyjaśniać działanie funkcji, więc deklarowany jest tylko nagłówek funkcji.

Klasy abstrakcyjnej nie można uzyskać bezpośrednio, ponieważ nie tworzymy jej obiektu; Mówi się, że jest to klasa manekina lub klasa nieaktywna, dopóki nie stanie się aktywna, tworząc obiekt klasy pochodzących z niej. Dlatego będziemy skierować próbkę klasy 1 z podstawowej próbki klasy abstrakcyjnej. Ta klasa nie jest abstrakcyjna. Klasa próbki jest dziedziczona w klasie dzieci próbki 1. Sposobem reprezentowania nieodłącznej klasy z klasy podstawowej jest użycie nazwy klasy nadrzędnej z znakiem okrężnicy przed klasą pochodną. Tutaj próbka 1 jest klasą pochodną.

# Próbka klasy publicznej 1: próbka

Kiedy odziedziczymy klasę po klasie abstrakcyjnej, może używać funkcji i metod obecnych w klasie abstrakcyjnej. Na przykład metodę SMP () można zadeklarować w klasie próbki 1, ale nie z nazwą streszczenia, ponieważ nie jest już klasą abstrakcyjną. Jest napisane słowem kluczowym „zastępowanie”, aby przedstawiać, że jest odziedziczona po klasie abstrakcyjnej. Prosta instrukcja jest wyświetlana w programie.

# Publiczne zastąpienie void smp ()

Podobnie inna próbka klasy 2 jest odziedziczona z próbki klasowej. I używa również metody zastępowania SMP (). Aby zainicjować klasę abstrakcyjną, nie utworzymy dla niej obiektu. Ale instancja pochodnej lub klasy dziecięcej zostanie utworzona. Klasa abstrakcyjna będzie automatycznie aktywna i można ją łatwo uzyskać, tworząc obiekt.

# Próbki s;

„S” jest przedmiotem klasy próbnej; jest stworzony, ale nie jest utworzony.

# S = nowa próbka1 ()

To dynamiczne tworzenie utworzy klasę próbki 1 za pomocą „nowego” operatora. Obecnie uzyskujemy dostęp do funkcji zadeklarowanej w klasie abstrakcyjnej za pośrednictwem tego obiektu.

Podobnie zostanie utworzony ten sam obiekt dla klasy 2. A następnie wywołamy funkcję z klasy nadrzędnej. Kiedy utworzymy instancję obiektu dla klasy, użyjemy go dla wywołania funkcji w następnym kroku, od razu określając go dla funkcji używanej w klasie.

Zapisz kod; Wykonamy go w terminalu Ubuntu, użyjemy kompilatora MCS, aby skompilować kod i Mono, aby go wykonać.

Plik $ MCS.Cs
$ plik mono.exe

Po wykonaniu widać, że oba wartości w funkcjach są wyświetlane.

Przykład 2

Korzystając z klasy abstrakcyjnej, obliczymy teraz obszar. Tak więc powstaje abstrakcyjna klasa dla tego obszaru, w której zostanie zdefiniowana abstrakcyjna metoda obszaru.

Streszczenie klasowej klasę
Streszczenie Public Int Area ();

Kwadrat pochodnych zostanie odziedziczony po klasie podstawowej. To obliczy obszar za pomocą metody abstrakcyjnej wewnątrz. Po pierwsze, zadeklarowana jest zmienna, aby uzyskać numer z programu głównego.

# Square Class: AreaClass

Konstruktor jest tworzony, aby przypisać wartość wysłaną z programu głównego. Wtedy funkcja zostanie zastąpiona z klasy abstrakcyjnej. Ta metoda obliczy obszar kwadratu, pomnożąc obie strony.

Utwórz kolejną klasę, aby ogłosić główny program. Tutaj tworzony jest obiekt klasy dziecięcej i zostanie utworzony, ponieważ musimy wysłać numer do konstruktora klasy kwadratowej, aby utworzyć obiekt.

# Square s = nowy kwadrat (15);

Korzystając z tego samego obiektu, funkcja zostanie wywołana.

S.Obszar ();

Konsola wydrukuje obszar obliczony przez funkcję.

Przykład 3

Klasa abstrakcyjna nie musi zawierać wszystkich metod abstrakcyjnych. Ale także metody nie-abstrakcyjne można określić w klasie abstrakcyjnej. Wykorzystaliśmy poniższy przykład, aby rozwinąć tę koncepcję. Utwórz klasę abstrakcyjną. Prosta funkcja jest tworzona i jest w stanie w pełni funkcjonowanym, ponieważ akceptuje parametry wysyłane do niej z wywołania funkcji i zwraca sumę obu liczb.

# Public int sum (int num1, int num2)

Po deklaracji funkcji regularnej definiuje się metodę abstrakcyjną, ale jej ciało nie jest tutaj zadeklarowane, ponieważ jest to funkcja abstrakcyjna.

# Public abstract int pomnóż (int num1, int num2)

Po klasie abstrakcyjnej stworzymy klasę pochodną, ​​która odziedziczy abstrakcyjną funkcję mnożenia.

Klasa pochodna: AbstractClass
Publiczne zastąpienie int mnożenie (int num1, int num2)

Ta funkcja pomnoży obie wartości, a następnie zwróci odpowiedź.

Teraz utworzymy główny program, aby utworzyć obiekt.

Pochodne d = new Donived ();
D.suma (20, 8);
D.pomnóż (20, 8);

Wniosek

Klasa abstrakcyjna w C Sharp jest tworzona, aby ukryć informacje, określając tylko nagłówek funkcji. Ta klasa abstrakcyjna jest niefunkcjonalna, dopóki nie zostanie przez nią uzyskana inna klasa dziecka. Klasa abstrakcyjna jest używana w dziedzictwie; W przeciwnym razie deklaracja klasy abstrakcyjnej jest bezużyteczna. Z powodu dziedziczenia uzyskujemy do niego dostęp, tworząc i tworząc obiekt dla klasy dzieci. Nie jest obowiązkowe, aby klasa abstrakcyjna musiała mieć w sobie wszystkie abstrakcyjne metody. Wyjaśniliśmy działanie i deklaracja klasy abstrakcyjnej, używając niektórych przykładów i wdrażając je w Ubuntu.