Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C# - Vererbung

Eines der wichtigsten Konzepte in der objektorientierten Programmierung ist die Vererbung. Durch Vererbung können wir eine Klasse in Bezug auf eine andere Klasse definieren, was das Erstellen und Verwalten einer Anwendung erleichtert. Dies bietet auch die Möglichkeit, die Codefunktionalität wiederzuverwenden und die Implementierungszeit zu verkürzen.

Beim Erstellen einer Klasse kann der Programmierer festlegen, dass die neue Klasse die Mitglieder einer vorhandenen Klasse erben soll, anstatt völlig neue Datenelemente und Elementfunktionen zu schreiben. Diese vorhandene Klasse wird als Basis bezeichnet Klasse, und die neue Klasse wird als abgeleitet bezeichnet Klasse.

Die Idee der Vererbung setzt das IS-A um Beziehung. Beispiel:Säugetier IS A Tier, Hund IST-A Säugetier daher Hund IS-A auch Tier und so weiter.

Basis- und abgeleitete Klassen

Eine Klasse kann von mehr als einer Klasse oder Schnittstelle abgeleitet werden, was bedeutet, dass sie Daten und Funktionen von mehreren Basisklassen oder Schnittstellen erben kann.

Die in C# zum Erstellen abgeleiteter Klassen verwendete Syntax lautet wie folgt −

<acess-specifier> class <base_class> {
   ...
}

class <derived_class> : <base_class> {
   ...
}

Stellen Sie sich eine Basisklasse Shape und ihre abgeleitete Klasse Rectangle −

vor Live-Demo
using System;

namespace InheritanceApplication {
   class Shape {
      public void setWidth(int w) {
         width = w;
      }
      public void setHeight(int h) {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // Derived class
   class Rectangle: Shape {
      public int getArea() { 
         return (width * height); 
      }
   }
   class RectangleTester {
      static void Main(string[] args) {
         Rectangle Rect = new Rectangle();

         Rect.setWidth(5);
         Rect.setHeight(7);

         // Print the area of the object.
         Console.WriteLine("Total area: {0}",  Rect.getArea());
         Console.ReadKey();
      }
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

Total area: 35

Basisklasse wird initialisiert

Die abgeleitete Klasse erbt die Member-Variablen und Member-Methoden der Basisklasse. Daher sollte das Oberklassenobjekt erstellt werden, bevor die Unterklasse erstellt wird. Sie können Anweisungen für die Initialisierung der Superklasse in der Member-Initialisierungsliste geben.

Das folgende Programm demonstriert dies −

Live-Demo
using System;

namespace RectangleApplication {
   class Rectangle {
      
      //member variables
      protected double length;
      protected double width;
      
      public Rectangle(double l, double w) {
         length = l;
         width = w;
      }
      public double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle  
   class Tabletop : Rectangle {
      private double cost;
      public Tabletop(double l, double w) : base(l, w) { }
      
      public double GetCost() {
         double cost;
         cost = GetArea() * 70;
         return cost;
      }
      public void Display() {
         base.Display();
         Console.WriteLine("Cost: {0}", GetCost());
      }
   }
   class ExecuteRectangle {
      static void Main(string[] args) {
         Tabletop t = new Tabletop(4.5, 7.5);
         t.Display();
         Console.ReadLine();
      }
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

Length: 4.5
Width: 7.5
Area: 33.75
Cost: 2362.5

Mehrfachvererbung in C#

C# unterstützt keine Mehrfachvererbung . Sie können jedoch Schnittstellen verwenden, um Mehrfachvererbung zu implementieren. Das folgende Programm demonstriert dies −

Live-Demo
using System;

namespace InheritanceApplication {
   class Shape {
      public void setWidth(int w) {
         width = w;
      }
      public void setHeight(int h) {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // Base class PaintCost
   public interface PaintCost {
      int getCost(int area);
   }
   
   // Derived class
   class Rectangle : Shape, PaintCost {
      public int getArea() {
         return (width * height);
      }
      public int getCost(int area) {
         return area * 70;
      }
   }
   class RectangleTester {
      static void Main(string[] args) {
         Rectangle Rect = new Rectangle();
         int area;
         
         Rect.setWidth(5);
         Rect.setHeight(7);
         area = Rect.getArea();
         
         // Print the area of the object.
         Console.WriteLine("Total area: {0}",  Rect.getArea());
         Console.WriteLine("Total paint cost: ${0}" , Rect.getCost(area));
         Console.ReadKey();
      }
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

Total area: 35
Total paint cost: $2450

C Sprache

  1. C#-Klasse und -Objekt
  2. Statisches C#-Schlüsselwort
  3. Verschachtelte C#-Klasse
  4. C++-Klassenvorlagen
  5. Python-Vererbung
  6. Anonyme Java-Klasse
  7. Java ObjectOutputStream-Klasse
  8. Java-Generika
  9. Java-Dateiklasse
  10. C# - Programmstruktur