C# で継承を使用する方法

C De Ji Chengwo Shi Yongsuru Fang Fa



オブジェクト指向プログラミング言語でコードを書いていると、新しいクラスで既存のコードを再利用したり、既存のクラスに機能を追加したりする必要がある状況に遭遇することがあります。そのような場合、継承が役立ちます。オブジェクト指向プログラミングの継承により、クラスは別のクラスのプロパティと動作を継承できます。この記事では、C# での継承の使用とそのさまざまな型について説明します。

目次

C#の継承とは

C# での継承のしくみ







C# での継承の種類



結論



C#の継承とは

継承を使用する C# では、1 つのクラスが別のクラスのプロパティとメソッドを取得または継承できます。つまり、基本クラスまたはスーパークラスと呼ばれる既存のクラスに基づいて新しいクラスを作成できます。基本クラスのプロパティを取得した後に形成されたクラスが呼び出されます 派生クラス またはサブクラス。





この C# の派生クラスは、基本クラスのプロパティを取得するだけでなく、独自の機能を追加することもできます。

C# での継承のしくみ

C# では、継承はコロンを使用して実現されます。 (:) シンボル。基底クラス名はコロンの後に定義され、派生クラスによって指定されます。



以下は、基本クラスからプロパティを取得する派生クラスを作成するための構文です。

クラス DerivedClass : ベースクラス

{

// 派生クラス メンバー

}

このコードでは、 派生クラス は派生クラスの名前であり、 ベースクラス 基底クラスの名前です。の : 記号は、DerivedClass が BaseClass を継承していることを示します。 DerivedClass のメンバーは、プライベートでない場合、BaseClass メンバーにアクセスできます。

C# での継承の種類

C# では、単一継承、複数レベル継承、階層継承、多重継承の 4 種類の継承がサポートされています。種類ごとに見ていきましょう。

単一継承

単一継承は、派生クラスが 1 つの基本クラスのみのプロパティを取得または継承する、最も一般的な種類の継承です。

例えば、 指定されたコードは、クラス階層を説明し、継承の概念を示しています。

システムの使用 ;

システムの使用 ;
クラスカー
{
公共 空所 始める ( )
{
コンソール。 書き込み行 ( 「車が発進しました」 ) ;
}
}
クラステスラ :
{
公共 空所 加速する ( )
{
コンソール。 書き込み行 ( 「加速するテスラ」 ) ;
}
}
クラス プログラム
{
静的 空所 主要 ( [ ] 引数 )
{
テスラ myTesla = 新しいテスラ ( ) ;
私のテスラ。 始める ( ) ; // 出力: 車が始動しました
私のテスラ。 加速する ( ) ; // 出力: テスラ加速
}
}

上記のコードでは、 車のクラス は基本クラスであり、呼び出されるメソッドがあります 始める() 、単にメッセージを出力します 車が始まりました コンソールに。

テスラ級 Car クラスから派生し、Car クラスのすべてのプロパティを取得します。 Tesla クラスは、というメソッドを追加します。 加速する() 、メッセージを出力します 加速するテスラ コンソールに。

主要() 関数は、呼び出される Tesla クラスのインスタンスを定義します。 マイテスラ その Start() および Accelerate() メソッドを呼び出します。

マルチレベル継承

マルチレベル継承とは、派生クラスが別の派生クラスから継承し、さらに別の派生クラスが基底クラスから継承することです。

例えば、 次の C# コードは、クラス階層での継承とメソッドのオーバーライドを示しています。

システムの使用 ;
クラスアニマル
{
公共 空所 食べる ( )
{
コンソール。 書き込み行 ( 「動物食い」 ) ;
}
}
クラス哺乳類 : 動物
{
公共 空所 走る ( )
{
コンソール。 書き込み行 ( 「走る哺乳類」 ) ;
}
}
クラスの犬 : 哺乳類
{
公共 空所 吠える ( )
{
コンソール。 書き込み行 ( 「犬の鳴き声」 ) ;
}
}
クラス プログラム
{
静的 空所 主要 ( [ ] 引数 )
{
ドッグマイドッグ = 新しい犬 ( ) ;
うちの犬。 食べる ( ) ; // 出力: 動物を食べる
うちの犬。 走る ( ) ; // 出力: 走っている哺乳類
うちの犬。 吠える ( ) ; // 出力: 犬の鳴き声
}
}

ここ を継承する派生クラスです。 哺乳類 から継承します。 動物 . Dog クラスは、Mammal と Animal のすべてのプロパティ、メソッド、および動作にアクセスでき、独自のメソッドを定義することもできます 吠える() .

動物クラス は基本クラスであり、呼び出されるメソッドがあります 食べる() 、これはメッセージ Animal eating をコンソールに出力するだけです。

哺乳類クラス Animal クラスから派生し、というメソッドを追加します 走る() これにより、Mammal running というメッセージがコンソールに出力されます。

ドッグクラス Mammal クラスから派生し、というメソッドを追加します。 吠える() 、メッセージ Dog barking をコンソールに出力します。

Main() メソッドは、Dog クラスのインスタンスを作成します。 うちの犬 その Eat()、Run()、および Bark() メソッドを呼び出します。

Eat() および Run() メソッドは Dog クラスでは定義されていませんが、親クラスから継承されていることに注意してください。 動物 哺乳類 、 それぞれ。の 吠える() メソッドは Dog クラスでのみ定義されます。

  文章
説明の自動生成

階層的継承

階層継承では、1 つの基本クラスからさまざまな数の派生クラスが継承されます。 例えば:

システムの使用 ;
クラス形状
{
公共 空所 描く ( )
{
コンソール。 書き込み行 ( 「形を描く」 ) ;
}
}
クラスサークル :
{
公共 空所 塗りつぶし ( )
{
コンソール。 書き込み行 ( 「埋め丸」 ) ;
}
}
クラススクエア :
{
公共 空所 ( )
{
コンソール。 書き込み行 ( 「ぬりえ広場」 ) ;
}
}
クラス プログラム
{
静的 空所 主要 ( [ ] 引数 )
{
サークル myCircle = 新しいサークル ( ) ;
マイサークル。 描く ( ) ; // 出力: 描画形状
マイサークル。 塗りつぶし ( ) ; // 出力: 塗りつぶし円

スクエア mySquare = 新しい広場 ( ) ;
マイスクエア。 描く ( ) ; // 出力: 描画形状
マイスクエア。 ( ) ; // 出力: 四角の色付け
}
}

上記のコードでは、両方 四角 から継承する派生クラスです。 . Shape で定義された Draw() メソッドにアクセスでき、独自のメソッド Fill() および Color() を定義することもできます。

ここでは、という名前の Circle クラスのオブジェクトを作成しました マイサークル とのオブジェクト 四角 という名前のクラス マイスクエア .次に、 描く() 両方のオブジェクトで、Shape クラスから継承されたメソッド。

次に、 塗りつぶし() Circle クラスに固有の myCircle のメソッド、および 色() square クラスに固有の mySquare のメソッド。

出力は次のようにコンソールに出力されます。

  文章
中程度の信頼度で自動生成された説明

多重継承

多重継承とは、派生クラスが複数の基本クラスから継承することです。ただし、C# は多重継承をサポートしていません。同様の機能を実現するために、C# は次を使用します。 インターフェイス .

結論

C# の継承により、クラスは基本クラスから動作と機能を継承できます。継承を使用すると、コードを再利用して、プログラム内に階層的なフローを作成できます。さまざまな種類の継承を理解することで、保守と拡張が容易な、より効率的で組織化されたコードを作成できます。