継承:コードを再利用する
C#の継承を使って既存のコードを再利用、拡張します
「継承:コードを再利用する」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン6/7です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全7レッスンが含まれています。
継承の概要
継承: コードの再利用
次のレッスンへようこそ!このレッスンでは、オブジェクト指向プログラミングの中核原則の1つである継承と、継承によってコードを再利用し、クラス階層を構築する方法について学びます。それでは始めましょう!

継承とは
継承とは
継承を使うと、あるクラス(子クラスまたは派生クラス)が、別のクラス(親クラスまたは基底クラス)の属性やメソッドを引き継ぐことができます。これにより、コードを再利用し、階層的なクラス関係を構築できます。
例: 「Car」クラスを「ElectricCar」クラスや「SportsCar」クラスの基底クラスとして使用し、「Color」や「Speed」などの共通プロパティを共有できます。
基底クラスの定義
基底クラスの定義
基底クラスには、派生クラスが継承できる共通のプロパティやメソッドを定義します。例:
重要なポイント: 再利用するコードは基底クラスに定義してください。
using System;
class Vehicle {
public string Color;
public void Drive() {
Console.WriteLine("The vehicle is driving.");
}
}
派生クラスの作成
派生クラスの作成
派生クラスは、基底クラスのプロパティとメソッドを継承します。継承を示すには:記号を使用します。例:
重要なポイント: 派生クラスでは、新しい機能を追加したり、基底クラスの機能をオーバーライドしたりできます。
using System;
class Vehicle {
public string Color;
public void Drive() {
Console.WriteLine("The vehicle is driving.");
}
}
class Car : Vehicle {
public int NumberOfDoors;
public void ShowDetails() {
Console.WriteLine("Color: " + Color);
Console.WriteLine("Doors: " + NumberOfDoors);
}
}
class Program {
static void Main() {
Car myCar = new Car();
myCar.Color = "Red"; // Inherited from Vehicle
myCar.NumberOfDoors = 4;
myCar.Drive(); // Inherited from Vehicle
myCar.ShowDetails();
}
}
メソッドのオーバーライド
メソッドのオーバーライド
派生クラスでは、基底クラスのメソッドをオーバーライドして、特化した振る舞いを提供できます。基底クラスではvirtualキーワードを、派生クラスではoverrideキーワードを使用します。例:
ヒント: オーバーライドは、派生クラスの振る舞いをカスタマイズする場合に便利です。
using System;
class Vehicle {
public virtual void Drive() {
Console.WriteLine("The vehicle is driving.");
}
}
class SportsCar : Vehicle {
public override void Drive() {
Console.WriteLine("The sports car is driving fast!");
}
}
class Program {
static void Main() {
SportsCar myCar = new SportsCar();
myCar.Drive(); // Calls the overridden method
}
}
base キーワード
base キーワード
base キーワードは、派生クラス内から基底クラスのメンバーにアクセスするために使用します。例:
ヒント: base を使用すると、基底クラスの動作を拡張または補完できます。
using System;
class Vehicle {
public string Color;
public virtual void Drive() {
Console.WriteLine("The vehicle is driving.");
}
}
class Truck : Vehicle {
public override void Drive() {
base.Drive(); // Calls the base class method
Console.WriteLine("The truck is carrying a heavy load.");
}
}
class Program {
static void Main() {
Truck myTruck = new Truck();
myTruck.Color = "Blue";
myTruck.Drive();
}
}
実践課題
実践課題
Animal という基底クラスを作成し、「動物が音を出します。」と出力する Speak() メソッドを定義します。次に、Speak() をオーバーライドして「犬がほえます。」と「猫が鳴きます。」を出力する派生クラス Dog と Cat を作成します。例:
using System;
class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Cat : Animal {
public override void Speak() {
Console.WriteLine("The cat meows.");
}
}
class Program {
static void Main() {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.Speak();
myCat.Speak();
}
}
継承のベストプラクティス
継承のベストプラクティス
ベストプラクティスをいくつか紹介します:
- 明確な「is-a」関係がある場合に限って継承を使用します(例: Car は Vehicle です)。
- 基底クラスはできるだけ汎用的に保ちます。
- 必要に応じて
sealedを使用し、それ以上の継承を防ぎます。
ヒント: 継承はコードベースを複雑にするのではなく、シンプルにするために使用します。
よくできました!
よくできました!
おめでとうございます!継承を使用してコードを再利用し、C# でクラス階層を構築する方法を学びました。次のレッスンでは、OOPのもう1つの強力な概念であるポリモーフィズムについて詳しく学びます。引き続きコーディングしましょう!

よくある質問
「継承:コードを再利用する」レッスンは無料ですか?
はい。「継承:コードを再利用する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全7レッスンが含まれています。
「継承:コードを再利用する」で何を学びますか?
C#の継承を使って既存のコードを再利用、拡張します ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン6/7です。
「継承:コードを再利用する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- オブジェクト指向プログラミングとは
- クラスとオブジェクトを定義する
- プロパティとメソッドを理解する
- C#のコンストラクター
- カプセル化とアクセス修飾子
- 継承:コードを再利用する
- ポリモーフィズムとメソッドのオーバーライド