【C#】オブジェクト指向(抽象クラスと抽象メソッド)

抽象クラスとは

クラスは、既存のクラスを継承して作ることができます。
継承に関しては、下記の記事をご参考ください。

【C#】オブジェクト指向(継承とは)

2021.03.30

抽象クラスとは、継承の概念をさらに発展させたものになります。

抽象クラスは、インターフェースとほとんど同じと思ってもらって構いません。
異なる点は、「ロジックが書ける」という点です。

インターフェースは、定義しか書くことができません。
それに対し、抽象クラスはロジックを記述することが可能です。

また、抽象クラスはインスタンスを生成できないクラスです。

抽象クラスを使用する目的は、「継承してサブクラスを作る」という設計を強制することです。

 

抽象メソッドとは

抽象メソッドとは、サブ(派生)クラスに実装を強制するメソッドになります。

抽象メソッドはメソッドの定義のみを行い、処理内容は記述しません。
処理内容は、抽象クラスを継承したサブ(派生)クラスで行います。

 

抽象クラスと抽象メソッドの使い方

抽象クラス

アクセス修飾子 abstract class クラス名
{
}

抽象メソッド

アクセス修飾子 abstract 戻り値の型 メソッド名(引数)
{
}

なお、抽象メソッドをサブクラスで実装する場合は、override修飾子をつける必要があります。

アクセス修飾子 override 戻り値の型 メソッド名(引数)
{
}

 

サンプルコード

using System;
namespace object_abstract
{
    public abstract class Run
    {
        private string _name;

        // コンストラクタ
        public Run(string name)
        {
            _name = name;
        }

        public string Name
        {
            get { return _name; }
        }

        // 走る(抽象メソッド)
        public abstract void Running();
    }
}
using System;
namespace object_abstract
{
    // Runを継承
    public class Car : Run
    {
        public Car() : base("自動車")
        {

        }

        // overrideをつける
        public override void Running()
        {
            Console.WriteLine("ブーブー");
        }
    }
}
using System;
namespace object_abstract
{
    public class Bicycle : Run
    {
        // コンストラクタ
        public Bicycle() : base("自転車")
        {
        }

        // overrideをつける
        public override void Running()
        {
            Console.WriteLine("チャリンチャリン");
        }
    }
}
using System;

namespace object_abstract
{
    class Program
    {
        static void Main(string[] args)
        {
            // Carクラスのインスタンスを生成
            Car car = new Car();

            // Bicycleクラスのインスタンスを生成
            Bicycle bicycle = new Bicycle();

            Console.Write(car.Name + ":");
            car.Running();

            Console.Write(bicycle.Name + ":");
            bicycle.Running();
        }
    }
}

 

実行結果:
自動車:ブーブー
自転車:チャリンチャリン

抽象クラス(Runクラス)をCarクラスとBicycleクラスで継承しています。
そして、Programクラスそれぞれのインスタンスを生成して処理を記述しています。

 

おすすめ・参考書籍

■C#を学習し始めた方向け
やさしいC 第3版 (「やさしい」シリーズ)

1週間でCの基礎が学べる本

確かな力が身につくC「超」入門 第2版 (Informatics&IDEA)

■C#をある程度学習した方向け
基礎からしっかり学ぶCの教科書 改訂新版 (マイクロソフト関連書)

独習C 新版

Effective C 6.0/7.0

オブジェクト指向における再利用のためのデザインパターン