Najlepszy samouczek Dziedziczenie w C # W 2024 r. W tym samouczku możesz dowiedzieć się Dno i klas pochodnych,Inicjalizacja klasy bazowej,C # dziedziczenie wielokrotne,
Dziedziczenie jest programowanie obiektowe jest jednym z najważniejszych pojęć. Dziedziczenie pozwala nam zdefiniować klasę na podstawie innej klasy, aby zdefiniować klasę, która umożliwia tworzenie i utrzymanie aplikacji jest znacznie łatwiejsze. Ale także przyczynia się do ponownego użycia kodu i zmniejszyć czas rozwoju.
Po utworzeniu klasy, programiści nie muszą całkowicie ponownie napisać nowy członkowie danych i funkcje składowe, wystarczy zaprojektować nową klasę, która dziedziczy istniejące członkowie klasy może być. Istniejącaklasa bazowa jest nazywana klasą, nowa klasa nazywana jest klasa pochodna.
Realizacja idei dziedziczenianależącego (IS-A) związek.Na przykład,należy ssak (IS-a)zwierzęta, psynależące do (is-a)ssaków, a więcnależą dopsa(IS-a)zwierząt.
Klasa może pochodzić z więcej niż jednej klasy lub interfejsu, co oznacza, że może dziedziczyć wiele klas bazowych interfejsy z danych i funkcji.
Tworzenie klasy pochodnej w C # składni przedstawia się następująco:
<Acess-specifier> klasy <base_class> { pl. } Klasa <derived_class>: <base_class> { pl. }
Załóżmy, istnieje Kształt klasy bazowej, która jest pochodzący klasy Rectangle:
using System; nazw InheritanceApplication { Klasa Shape { public void setWidth (int w) { width = w; } public void setHeight (int h) { height = h; } chronione int szerokość; chronione int wysokość; } // Klasa pochodna klasy Rectangle: Kształt { public int getArea () { powrót (szerokość * wysokość); } } Klasa RectangleTester { static void Main (string [] args) { Prostokąt Rect = new Rectangle (); Rect.setWidth (5); Rect.setHeight (7); // Obszar wydruku z Console.WriteLine obiektu ( "powierzchnia całkowita: {0}", Rect.getArea ()); Console.ReadKey (); } } }
Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:
Powierzchnia całkowita: 35
Klasa pochodna dziedziczy zmienne składowe i metod członkiem klasy bazowej. Dlatego przedmiotem rodzic powinien być utworzony przed obiektem podklasa została utworzona. Można zainicjować klasę dominującą w liście inicjującej członkiem.
Poniższy program demonstruje tę kwestię:
using System; nazw RectangleApplication { klasy Rectangle { // Zmienne użytkownika chroniony podwójną długość; zabezpieczone podwójną szerokość; Prostokąt publicznych (podwójne l dwukrotnie w) { długość = l; width = w; } public double GetArea () { Zwraca długość * szerokość; } public void Display () { Console.WriteLine ( "Czas trwania: {0}", długość); Console.WriteLine ( "width: {0}", szerokość); Console.WriteLine ( "Rozmiar: {0}", GetArea ()); } } // Koniec klasy Rectangle Klasa Blat: prostokąt { prywatny pokój kosztów; Blat publicznych (podwójne l dwukrotnie w): podstawowy (l, w) {} public double GetCost () { podwójne koszty; Koszt = GetArea () * 70; zwrotu kosztów; } public void Display () { base.Display (); Console.WriteLine ( "Koszt: {0}", GetCost ()); } } Klasa ExecuteRectangle { static void Main (string [] args) { Blat t = new stołowa (4.5, 7.5); t.Display (); Console.ReadLine (); } } }
Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:
Długość: 4,5 Szerokość: 7,5 Powierzchnia: 33,75 Koszt: 2362,5
C # nie obsługuje wielokrotne dziedziczenie.Jednakże, można użyć interfejsu do osiągnięcia wielokrotnego dziedziczenia. Poniższy program demonstruje tę kwestię:
using System; nazw InheritanceApplication { Klasa Shape { public void setWidth (int w) { width = w; } public void setHeight (int h) { height = h; } chronione int szerokość; chronione int wysokość; } // Klasa bazowa PaintCost public interface PaintCost { int getCost (int area); } // Klasa pochodna klasy Rectangle: Kształt, PaintCost { public int getArea () { powrót (szerokość * wysokość); } public int getCost (int area) { Obszar powrotu * 70; } } Klasa RectangleTester { static void Main (string [] args) { Prostokąt Rect = new Rectangle (); int obszar; Rect.setWidth (5); Rect.setHeight (7); Powierzchnia = Rect.getArea (); // Obszar wydruku z Console.WriteLine obiektu ( "powierzchnia całkowita: {0}", Rect.getArea ()); Console.WriteLine ( "Paint Całkowity koszt: $ {0}", Rect.getCost (obszar)); Console.ReadKey (); } } }
Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:
Powierzchnia całkowita: 35 Farba Całkowity koszt: $ 2450