Latest web development tutorials

Dziedziczenie w C #

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.

Dno i klas pochodnych

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>
{
 ...
}
Klasa <derived_class>: <base_class>
{
 ...
}

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

Inicjalizacja klasy bazowej

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 # dziedziczenie wielokrotne

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