C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で継承クラスのオブジェクトを作成する方法

C#では、クラスは1つの基底クラスと、複数のインターフェースから派生することができます。派生クラスは、基底クラスのメンバー変数やメンバー メソッドをそのまま引き継ぐことが可能です。

そのため、基底クラス(スーパークラス)のオブジェクトは、派生クラス(サブクラス)よりも先に初期化されている必要があります。C#では、派生クラスのコンストラクターの後ろに : base(...) という形式で基底クラスの初期化リストを記述することで、スーパークラスの初期化処理を明示的に指示できます。

以下の例では、継承関係にあるクラスのオブジェクトを実際に作成し、動作を確認しています。

コード例

using System;
namespace Demo {
    class Rectangle {
        protected double length;
        protected double width;
        public Rectangle(double l, double w) {
            length = l;
            width = w;
        }
        public double GetArea() {
            return length * width;
        }
        public void Display() {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    }
    class Tabletop : Rectangle {
        private double cost;
        public Tabletop(double l, double w) : base(l, w) { }
        public double GetCost() {
            double cost;
            cost = GetArea() * 70;
            return cost;
        }
        public void Display() {
            base.Display();
            Console.WriteLine("Cost: {0}", GetCost());
        }
    }
    class ExecuteRectangle {
        static void Main(string[] args) {
            Tabletop t = new Tabletop(3, 8);
            t.Display();
            Console.ReadLine();
        }
    }
}

出力結果

Length: 3
Width: 8
Area: 24
Cost: 1680

コードの解説

  • Rectangle クラス:長さ(length)と幅(width)を protected フィールドとして保持し、面積を返す GetArea() メソッドと、各値を表示する Display() メソッドを提供する基底クラスです。
  • Tabletop クラス:Rectangle を継承した派生クラスです。コンストラクター内で base(l, w) を呼び出すことで、まず基底クラス側が確実に初期化されます。GetCost() メソッドは面積に単価 70 を掛けてコストを算出します。
  • ExecuteRectangle クラス:エントリーポイントとなる Main メソッドを持ち、Tabletop オブジェクトを生成して Display() を呼び出すことで、継承されたメンバーも含めた結果を出力します。

このように、base キーワードを使った初期化リストを利用すれば、派生クラスのオブジェクト生成時に基底クラスのコンストラクターへ引数を渡し、正しい順序でオブジェクトを構築できます。

  1. 【JavaScript】オブジェクトがクラスのインスタンスかどうかを判定する方法

    JavaScriptでは、instanceof 演算子を使うことで、あるオブジェクトが特定のクラス(コンストラクタ関数)のインスタンスであるかどうかを簡単に判定できます。instanceof 演算子とは?instanceof 演算子は、左辺のオブジェクトが右辺に指定したコンストラクタ関数のプロトタイプチェーン上に存在するかどうかを評価し、その結果を真偽値(true / false)として返します。この仕組みを利用することで、オブジェクトがどのクラスから生成されたものなのかを実行時に動的にチェックできます。コード例以下は、ボタンをクリックしたときに student1 オブジェクトが Studen

  2. C#のConsoleクラスとは?主要プロパティの使い方を実例付きで解説

    C#のConsoleクラスは、コンソールアプリケーションにおける標準入力・標準出力・標準エラー出力の各ストリームを表すクラスです。テキストの表示や入力の読み取りだけでなく、文字色や背景色の変更、カーソル位置やサイズの制御など、コンソール操作に関するさまざまな機能が提供されています。ここでは、Consoleクラスの代表的なプロパティの使い方を、サンプルコードと実行結果とあわせて解説します。Console.CursorLeftプロパティコンソール上のカーソル位置(左端から数えた列位置)を変更するには、Console.CursorLeftプロパティを使用します。サンプルコードusing System