C#-Vererbung

高洛峰
Freigeben: 2017-02-08 13:35:56
Original
1158 Leute haben es durchsucht

Vererbung ist eines der wichtigsten Konzepte in der objektorientierten Programmierung. Durch Vererbung können wir eine Klasse basierend auf einer anderen Klasse definieren, was die Erstellung und Wartung von Anwendungen erleichtert. Es hilft auch, Code wiederzuverwenden und Entwicklungszeit zu sparen.

Beim Erstellen einer Klasse müssen Programmierer neue Datenmitglieder und Mitgliedsfunktionen nicht vollständig neu schreiben. Sie müssen lediglich eine neue Klasse entwerfen und die Mitglieder der vorhandenen Klasse erben. Diese vorhandene Klasse wird als Basisklasse bezeichnet, und die neue Klasse wird als abgeleitete Klasse bezeichnet.

Die Idee der Vererbung implementiert die Belongs to (IS-A)-Beziehung. Beispielsweise sind Säugetiere (IS-A)-Tiere, Hunde sind (IS-A)-Säugetiere, also sind Hunde (IS-A)-Tiere.

Basis- und abgeleitete Klassen

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

Die Syntax zum Erstellen einer abgeleiteten Klasse in C# lautet wie folgt:

class { ... } class ;{ .. . }

Angenommen, es gibt eine Basisklasse Shape und ihre abgeleitete Klasse ist Rechteck:

using System;namespace InheritanceApplication{ class Shape { public void setWidth(int w) { width = w; } PUBLIC VOID SETHEIGHT (int H) {Height = H;} Protected Int Height;} // Disposter-Klassenrechteck: Shape {PublicInt Getare a () {Return (Width*Height);}} Klasse Rechteckteter {Static voidMain(string[] args) { Rechteck Rect = new Rechteck(); Rect.setWidth(7); //Drucken Sie den Bereich des Objekts Console.WriteLine("Total Bereich: {0 }", Rect .getArea()); Console.ReadKey(); } }}

Wenn der obige Code kompiliert und ausgeführt wird, werden die folgenden Ergebnisse erzeugt:

Initialisierung von die Basisklasse

Die abgeleitete Klasse erbt die Mitgliedsvariablen und Mitgliedsmethoden der Basisklasse. Daher sollte das übergeordnete Klassenobjekt erstellt werden, bevor das untergeordnete Klassenobjekt erstellt wird. Sie können die übergeordnete Klasse in der Mitgliederinitialisierungsliste initialisieren.

Das folgende Programm demonstriert dies:

using System;namespace RectangleApplication{   class Rectangle   {      // 成员变量      protected double length;      geschützte doppelte Breite;      public Rectangle(double l, double w)      {         length = l;         Breite = w;      }      public double GetArea()      {        return length * width;      }      public void Display()      {         Console.WriteLine("长度: {0}", length);         Console.WriteLine("宽度: {0}", width);         Console.WriteLine("Fehler: {0}", GetArea());      }   }//end class Rechteck     class Tischplatte : Rechteck   {      private double cost;      publicTabletop(double l, double w) : base(l, w)      { }      public double GetCost()      {         double cost;         cost = GetArea() * 70;         Rücksendekosten;      }      public void Display()      {         base.Display();         Console.WriteLine("成本: {0}", GetCost());      }   }   classExecuteRectangle   {      static void Main(string[] args)      {         Tabletop t = new Tabletop(4.5,7.5);         t.Display();         Console.ReadLine();      }   }}

: 33.75成本: 2362.5

C#多重继承

多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能

C# 不支持多重继承.但是,您可以使用接口来实现多重继承.下面的程序演示了这点:

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;   }   // PaintCost verwenden   öffentliche Schnittstelle PaintCost   {      int getCost(int area);   }   // 派生类   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 Bereich;         Rect.setWidth(5);         Rect.setHeight(7);         Bereich = Rect.getArea();         // 打印对象的面积         Console.WriteLine("总面积: {0}",  Rect.getArea());         Console.WriteLine("油漆漆成本: ${0}" , Rect.getCost(area));         Console.ReadKey();      }   }}

: $2450更多C# 继承相关文章请Kostenlose PHP-Version!
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage