抽象クラス
派生クラスで共通の構造を作る抽象クラスの役割を学びます
「抽象クラス」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン2/6です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全6レッスンが含まれています。
抽象クラス
抽象クラス
次のレッスンへようこそ!このレッスンでは、C#の抽象クラスとその目的、インターフェースとの違いについて学びます。それでは始めましょう!

抽象クラスとは
抽象クラスとは
抽象クラスは、直接インスタンス化できないクラスです。他のクラスの設計図として機能し、派生クラスで実装する必要がある抽象メソッドを含めることができます。
重要なポイント: 抽象クラスには、完全に実装されたメソッドと、宣言だけを行うメソッド(抽象メソッド)の両方を含めることができます。
抽象クラスの定義
抽象クラスの定義
抽象クラスを定義するには、abstract キーワードを使用します。例:
ヒント: 関連するクラスに共通の基底クラスを提供するには、抽象クラスを使用します。
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
public void Sleep() { // Non-abstract method
Console.WriteLine("The animal is sleeping.");
}
}
抽象クラスの実装
抽象クラスの実装
派生クラスでは、抽象クラスのすべての抽象メソッドを実装する必要があります。例:
重要なポイント: 抽象メソッドは、派生クラスで実装する必要がある動作を定義します。
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
public void Sleep() {
Console.WriteLine("The animal is sleeping.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Program {
static void Main() {
Dog myDog = new Dog();
myDog.Speak(); // Outputs: The dog barks.
myDog.Sleep(); // Outputs: The animal is sleeping.
}
}
抽象クラスとインターフェースの比較
抽象クラスとインターフェースの比較
抽象クラスとインターフェースはどちらも抽象化に使用されますが、いくつかの違いがあります:
- 抽象クラスには実装済みメソッドと抽象メソッドの両方を含められますが、インターフェースには抽象メソッドしか含められません(C# 8.0より前の場合)。
- 抽象クラスには、フィールド、コンストラクター、メンバーのアクセス修飾子を含めることができます。
- クラスが継承できる抽象クラスは1つだけですが、複数のインターフェースを実装できます。
ヒント: 密接に関連するクラスには抽象クラスを、より広範な抽象化にはインターフェースを使用します。
抽象クラスを使用する場面
抽象クラスを使用する場面
抽象クラスは、次のような場合に適しています:
- 共有する機能を持つ共通の基底クラスを定義したい場合。
- 既定の実装を提供する非抽象メソッドを含める必要がある場合。
- 共通の階層を共有する関連クラスを扱う場合。
例: Circle クラスと Rectangle クラスのための「Shape」抽象クラスです。
実践課題
実践課題
抽象メソッド CalculateArea() を持つ抽象クラス Shape を作成します。派生クラス Rectangle と Circle でこのメソッドを実装します。例:
using System;
abstract class Shape {
public abstract double CalculateArea();
}
class Rectangle : Shape {
public double Width { get; set; }
public double Height { get; set; }
public override double CalculateArea() {
return Width * Height;
}
}
class Circle : Shape {
public double Radius { get; set; }
public override double CalculateArea() {
return Math.PI * Radius * Radius;
}
}
class Program {
static void Main() {
Shape rectangle = new Rectangle { Width = 5, Height = 4 };
Shape circle = new Circle { Radius = 3 };
Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
Console.WriteLine("Circle Area: " + circle.CalculateArea());
}
}
抽象クラスのベストプラクティス
抽象クラスのベストプラクティス
ベストプラクティスをいくつか紹介します:
- 継承する必要のある共通機能がある場合は、抽象クラスを使用します。
- 抽象クラスの役割を明確に保ち、不要なメンバーを追加しないようにします。
- 適切な場合は、抽象クラスとインターフェースを組み合わせます。
ヒント: 抽象クラスは、派生クラスの確かな基盤となるように設計します。
よくできました!
よくできました!
おめでとうございます!抽象クラスを使用して共通の動作を定義し、派生クラス間の一貫性を確保する方法を学びました。次のレッスンでは、C#の静的メンバーと静的メソッドについて学びます。引き続きコーディングしましょう!

よくある質問
「抽象クラス」レッスンは無料ですか?
はい。「抽象クラス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全6レッスンが含まれています。
「抽象クラス」で何を学びますか?
派生クラスで共通の構造を作る抽象クラスの役割を学びます ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/6です。
「抽象クラス」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。