継承は、オブジェクト指向プログラミングで最も重要な概念の 1 つです。継承を使用すると、別のクラスに基づいてクラスを定義できるため、アプリケーションの作成と保守が容易になります。また、コードを再利用し、開発時間を節約するのにも役立ちます。
クラスを作成するとき、プログラマは新しいデータ メンバーやメンバー関数を完全に書き直す必要はなく、新しいクラスを設計し、既存のクラスのメンバーを継承するだけで済みます。この既存のクラスは基本クラスと呼ばれ、新しいクラスは派生クラスと呼ばれます。
継承の考え方は、所属 (IS-A) 関係を実装します。たとえば、哺乳類は (IS-A) 動物であり、犬は (IS-A) 哺乳類であるため、犬も (IS-A) 動物です。
基本クラスと派生クラス
クラスは複数のクラスまたはインターフェイスから派生できます。つまり、複数の基本クラスまたはインターフェイスからデータと関数を継承できます。
C# で派生クラスを作成するための構文は次のとおりです:
基本クラスの形状が Rectangle であると仮定します。
USING SYSTEM; 名前空間継承アプリケーション {Class Shape {Public Void SetWidth (int W) {width = w;} Public D Setheight (int H) {height = h ;} protected int width; protected int height; } // 派生クラス class Rectangle: Shape { publicint getArea() { return (width * height) } } class RectangleTester { static voidMain(string[] args) { Rectangle Rect = new Rectangle(); Rectangle(5); Rect.setHeight(7); ’ s ‐ ‐ ‐ ‐ ‐ ‐ コンソール
上記のコードをコンパイルして実行すると、次の結果が生成されます: 総面積: 35基底クラスの初期化 派生クラスは基底クラスのメンバ変数とメンバメソッドを継承します。したがって、子クラス オブジェクトを作成する前に、親クラス オブジェクトを作成する必要があります。メンバー初期化リストで親クラスを初期化できます。 次のプログラムはこれを示しています:using System;namespace RectangleApplication{ class Rectangle { // 成员变量 protected double length; 保護された全幅。 public Rectangle(double l, double w) { length = l; 幅 = w; } public double GetArea() { return length * width; } public void Display() { Console.WriteLine("長さ: {0}", length); Console.WriteLine("宽度: {0}", width); Console.WriteLine("面积: {0}", GetArea()); } }//end class Rectangle class Tabletop : Rectangle { private double cost; publicTabletop(double l, double w) : base(l, w) { } public double GetCost() { double cost; コスト = GetArea() * 70; 返品費用。 } 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(); } }}
当上面の代コードが编译および実行されるとき、它会生成下列結果:
长度: 4.5宽度: 7.5面积: 33.75成本: 2362.5
C#多重继承
多重許可されるのは 1 つのタイプです同時に、複数の父クラスからの継承が機能として実行されます。 単一の継承とは対照的に、単一の継承は、1 つの父クラスからのみ継承できることを示します。
C# は多重継承をサポートしていません。以下のプログラムはこれを示しています:
using System;namespace InheritanceApplication{ class Shape { public void setWidth(int w) { width = w; } public void setHeight(int h) { height = h; } protected int width; 保護された int 高さ。 } // 基类 PaintCost パブリック インターフェイス PaintCost { int getCost(int area); } // 派生类 class Rectangle : Shape, PaintCost { public int getArea() { return (width * height); } public int getCost(int area) { return area * 70; } } クラス RectangleTester { static void Main(string[] args) { Rectangle Rect = new Rectangle(); 整数領域; Rect.setWidth(5); Rect.setHeight(7); area = Rect.getArea(); // 打印オブジェクトの面积 Console.WriteLine("总面积: {0}", Rect.getArea()); Console.WriteLine("油漆总成本: ${0}" , Rect.getCost(area)); Console.ReadKey(); } }}
当上面の代コードが编译されて実行されるとき、它会生成下列結果:
总面积: 35油漆总成本: $2450
更多C# 继承相关文章请关注PHP中文网!