●学校情報

講座一覧・募集状況

学習方法

学習サポート

修了生の評価

受講生の横顔

当学院について

入学相談

入学手続

 

●講座情報

技術者養成講座

プログラミング講座

WEB講座

情報処理試験講座

Excel講座

Access講座

 

●関連コラム

関連コラム

関連用語集

 

logo

 

 

関連用語集

土台だけを用意する「抽象クラス(Abstract Class)」とは?

C#では、共通の構造や機能は持たせたいけれど、詳細は子クラスで定義したいというときに、抽象クラス(abstract class)を使います。
通常のクラスと違い、インスタンス化はできず継承専用として使われます。

抽象クラスの特徴

  • abstract修飾子を使って定義する
  • インスタンス化はできない
  • 抽象メソッドを含めることができる(中身なしのメソッド)
  • 共通処理(フィールド・プロパティ・メソッド)を定義して子クラスに継承させられる

基本構文

public abstract class クラス名 {
    public abstract void メソッド名(); // 抽象メソッド
}
    

例:Animalクラス

public abstract class Animal {
    public string Name { get; set; }

    public abstract void Speak(); // 抽象メソッド(中身なし)

    public void Eat() {
        Console.WriteLine("食べる");
    }
}
    

子クラス:Dog

public class Dog : Animal {
    public override void Speak() {
        Console.WriteLine("ワンワン!");
    }
}
    

使い方

Animal a = new Dog();  // 抽象クラス型で扱う(多態性)
a.Speak();             // → ワンワン!
a.Eat();               // → 食べる
    

abstractとvirtualの違い

項目 abstract virtual
定義 中身なし(必ずオーバーライド) 中身あり(オーバーライドは任意)
使用できるクラス abstractクラス 通常のクラスもOK

抽象クラスとインターフェースの違い

  • 抽象クラス:共通処理を持てる、フィールドや実装ありのメソッドも書ける
  • インターフェース:すべて実装なし(C#8以降は一部例外あり)

まとめ

抽象クラス(abstract class)は、共通の性質だけを定義し、詳細な処理は子クラスに任せるためのクラスです。
インスタンス化はできませんが、共通のメンバーやルールを子クラスに継承させることで、柔軟かつ統一的な設計が可能になります。
abstractoverride の使い方とあわせて覚えると効果的です!