C#のabstractキーワード徹底解説!抽象クラスの基本と実装例
C#のabstractキーワードとは
C#におけるabstractキーワードは、抽象クラスや抽象メンバーを定義するために使用される修飾子です。抽象クラスには、実装を持たない抽象メソッドと、通常の実装を持つ非抽象メソッドの両方を含めることができます。
重要なポイントとして、抽象クラスは直接インスタンス化できません。そのため、抽象クラスを利用するには、必ず派生クラスを作成し、そこで抽象メンバーを実装する必要があります。
抽象クラスの定義例
以下は、抽象クラス「Vehicle」と抽象メソッド「display()」を定義した例です。
public abstract class Vehicle {
public abstract void display();
}
クラスにabstractを付けると抽象クラスになり、メソッドにabstractを付けると抽象メソッドになります。抽象メソッドは本体(処理内容)を持たず、宣言だけで定義します。
派生クラスでの実装
抽象クラスVehicleからは、Bus・Car・Motorcycleといった複数の派生クラスを作成できます。派生クラスでは、overrideキーワードを使って抽象メソッドを必ずオーバーライド(実装)しなければなりません。
以下は、Carクラスの実装例です。
public class Car : Vehicle {
public override void display() {
Console.WriteLine("Car");
}
}
サンプルプログラム
次に、C#における抽象クラスの完全なサンプルコードを紹介します。基底クラス型の変数に各派生クラスのインスタンスを代入し、ポリモーフィズム(多態性)を活用した書き方になっています。
using System;
public abstract class Vehicle {
public abstract void display();
}
public class Bus : Vehicle {
public override void display() {
Console.WriteLine("Bus");
}
}
public class Car : Vehicle {
public override void display() {
Console.WriteLine("Car");
}
}
public class Motorcycle : Vehicle {
public override void display() {
Console.WriteLine("Motorcycle");
}
}
public class MyClass {
public static void Main() {
Vehicle v;
v = new Bus();
v.display();
v = new Car();
v.display();
v = new Motorcycle();
v.display();
}
}
実行結果
Bus Car Motorcycle
抽象クラスのポイントまとめ
- インスタンス化不可: 抽象クラスは直接
newしてオブジェクトを生成できません。 - 多態性の実現: 基底クラス型の変数に派生クラスのインスタンスを代入することで、同じメソッド呼び出しでも異なる動作を実現できます。
- 共通設計の強制: 派生クラスに対して特定のメソッドの実装を強制できるため、設計の一貫性が保たれます。
- virtualとの違い: 抽象メソッドは実装を持たず派生クラスでの実装が必須ですが、
virtualメソッドは基底クラスに実装があり、オーバーライドは任意です。
-
C#の「this」キーワードとは?基本の使い方と実例をわかりやすく解説
C#における「this」キーワードは、クラスの現在のインスタンス(自分自身)を参照するために使用されます。特に、メソッドのパラメータ名とクラスのフィールド名が同じ場合に、両者を明確に区別したいときに役立ちます。また、「this」キーワードにはもう一つ重要な用途があります。それは、同じクラス内のあるコンストラクタから別のコンストラクタを呼び出すという使い方です。thisキーワードの基本的な使い方ここでは、学生の情報(ID、名前、年齢、科目)を管理する例を通して、「this」キーワードの役割を見ていきましょう。コンストラクタ内で現在のクラスのフィールドを参照するために、次のように「this」を使用
-
Javaの抽象クラスと抽象メソッドの基本と実装例
はい、Javaでは抽象クラスや抽象メソッドを簡単に作成することができます。本記事では、abstractキーワードを使った抽象クラスの定義方法と、その基本的な構造について具体例を交えて解説します。抽象クラスとは抽象クラス(abstract class)は、その名の通り「抽象的」な概念を表すためのクラスで、直接インスタンス化することはできません。共通の属性や振る舞いをサブクラスに継承させるための設計図として活用されます。抽象クラスを作成する方法は非常にシンプルで、クラス宣言時に class キーワードの前に abstract キーワードを付けるだけです。コード例/* ファイル名 : Employe