C#の基底クラス(基本クラス)とは?継承の基本をサンプルコードで解説
C#でクラスを作成する際、まったく新しいデータメンバやメンバ関数を一から書くのではなく、既存のクラスのメンバを引き継ぐ(継承する)形で新しいクラスを定義することができます。このとき、継承元となる既存のクラスを基底クラス(基本クラス・ベースクラス)と呼び、継承によって新しく作成されるクラスを派生クラス(サブクラス)と呼びます。
継承はオブジェクト指向プログラミングの中核をなす概念の一つです。共通の機能を基底クラスにまとめておくことで、コードの重複を減らし、保守性と再利用性の高いプログラムを実現できます。
複数のクラスからの継承
C#では、1つのクラスが複数のインターフェースを実装したり、基底クラスとインターフェースを同時に継承したりすることが可能です。ただし、注意点として、C#ではクラスの多重継承はサポートされていません。つまり、1つの派生クラスが直接継承できるクラスは1つだけです。複数の機能を取り込みたい場合は、インターフェースを組み合わせるのが一般的な手法となります。
基底クラスの構文
C#における基底クラスと派生クラスの基本的な構文は以下の通りです。派生クラス名の後にコロン(:)を付け、続けて継承元の基底クラス名を記述します。
<アクセス修飾子> class <基底クラス名> {
...
}
class <派生クラス名> : <基底クラス名> {
...
}継承の実装例
ここでは、図形を表すShapeクラスを基底クラスとし、それを継承したRectangle(長方形)クラスを作成する例を見てみましょう。
using System;
namespace InheritanceApplication {
// 基底クラス
class Shape {
public void setWidth(int w) {
width = w;
}
public void setHeight(int h) {
height = h;
}
protected int width;
protected int height;
}
// 派生クラス:Shape を継承
class Rectangle : Shape {
public int getArea() {
return (width * height);
}
}
class RectangleTester {
static void Main(string[] args) {
Rectangle Rect = new Rectangle();
Rect.setWidth(5);
Rect.setHeight(7);
// 面積を出力
Console.WriteLine("Total area: {0}", Rect.getArea());
Console.ReadKey();
}
}
}コードの解説
この例では、Shapeクラスがwidthとheightという2つのprotectedフィールドと、それぞれに値を設定するためのsetWidth()・setHeight()メソッドを持っています。
派生クラスであるRectangleは、Shapeを継承しているため、これらのフィールドやメソッドを自分で定義し直すことなくそのまま利用できます。さらに、幅と高さを掛け合わせて面積を返すgetArea()メソッドを独自に追加しています。
Mainメソッド内では、Rectangleのインスタンスを生成し、幅5・高さ7を設定した上で面積を計算しています。このプログラムを実行すると、コンソールには次のように表示されます。
Total area: 35
まとめ
基底クラスからの継承を使うことで、既存のコードを再利用しながら、派生クラス固有の機能を追加できます。protectedメンバは派生クラスからアクセスできるため、基底クラスと派生クラスの間でデータを共有する際に便利です。継承はC#プログラミングにおいて非常に重要な概念なので、ぜひ基本的な使い方をマスターしておきましょう。
-
C#のArrayクラスとは?主なプロパティと使い方をわかりやすく解説
C#のArrayクラスとは Arrayクラスは、C#におけるすべての配列の基底クラス(基本クラス)です。このクラスはSystem名前空間で定義されており、配列を操作するためのさまざまなプロパティやメソッドが用意されています。 通常、C#で配列を作成すると、その配列は暗黙的にこのArrayクラスから派生しているため、Lengthなどの便利な機能をすぐに利用できます。 Arrayクラスの主なプロパティ一覧 以下の表は、Arrayクラスで特によく使用される代表的なプロパティをまとめたものです。 番号 プロパティと説明 1 IsFixedSize 配列が固定サイズであるかどうかを示す値を取得
-
dry-rbとは?Ruby開発に役立つ注目のGemコレクション徹底解説
新しい面白いgemを試してみたいと思いませんか? そんな方におすすめしたいのがdry-rbです。これは一般的な問題への解決策を提供するgemのコレクションで、18以上のRuby gemで構成されています。それぞれのgemは組み合わせて使うことも、単体で使うことも可能です。 代表的なgemには以下のようなものがあります: dry-initializer dry-struct dry-validations dry-events dry-transaction この記事では、その中から3つのgemをピックアップして紹介し、dry-rbが持つ可能性の一端を体験していただきます! dry-str