アフィリエイト広告を利用しています。

C#

C#のコンストラクタを使用して親クラスに引数を渡す方法

概要

継承を使用した子クラスのコンストラクタから親クラスのコンストラクタに引数を渡し方を解説します。引数を渡す必要があるときは特殊な書き方を行う必要があります。

基本的なコンストラクタの説明を行います。

コンストラクタ

オブジェクト作成時に呼び出されるメソッドです。オブジェクトを初期化するために使用します。クラス名と同じ名前を付けます。

using System;

class Program
{
    static void Main()
    {
          Udon a = new Udon();    //オブジェクトの作成時にコンストラクタが呼ばれる   
    } 
}

class Udon
{
    public Udon()
    {
        //コンストラクタの処理
        Console.WriteLine("うどん玉は100円です");
    }
}

実行した結果は以下の通りです。

うどん玉は100円です

引数付きコンストラクタ

オブジェクト作成時、コンストラクタで引数を渡し、引数を使用して変数を初期化できます。

using System;

class Program
{
    static void Main()
    {
          Udon a = new Udon(150);    //オブジェクトの作成時にコンストラクタが呼ばれる   
    } 
}

class Udon
{
    private int price = 0;
    public Udon(int price)
    {
        this.price = price;
        //コンストラクタの処理
        Console.WriteLine("うどん玉は" + price.ToString() + "円です");
    }
}

実行した結果は以下の通りです。

うどん玉は150円です

クラスの継承

既存のクラスを基にして新しいクラスを作成することです。新しいクラスは基になったクラスの性質を引き継ぐことができるだけではなく、新たな性質を加えることができます。基になったクラスを親クラス、継承で新しく作成したクラスを子クラスと呼びます。

using System;

class Program
{
    static void Main()
    {
          Kake_udon a = new Kake_udon();    //オブジェクトの作成時にコンストラクタが呼ばれる   
    } 
}
//親クラス(うどん)
class Udon
{
    public Udon()
    {
        //コンストラクタは今回はなし
    }
}
//子クラス(かけうどん)
class Kake_udon :Udon
{
    public Kake_udon()
    {
        //コンストラクタの処理
         Console.WriteLine("かけうどんは300円です"); 
    }
}

実行した結果は以下の通りです。

かけうどんは300円です

継承した子クラスから親クラスに引数を渡すコンストラクタ

子クラスのコンストラクタから親クラスのコンストラクタに引数を渡すにはbaseを使用します。子クラスのコンストラクタ処理時、親クラスのコンストラクタに引数を渡すことができます。

using System;

class Program
{
    static void Main()
    {
          Kake_udon a = new Kake_udon(300);    //オブジェクトの作成時にコンストラクタが呼ばれる   
    } 
}
//親クラス(うどん)
class Udon
{
    private int udon_price = 0;
    public Udon(int price)
    {
        udon_price = price;
        //コンストラクタの処理
        Console.WriteLine("うどん玉は" + udon_price.ToString() + "円です");
    }
}
//子クラス(かけうどん)
class Kake_udon :Udon
{
    private int kake_udon_price = 0;
    public Kake_udon(int price) :base(price - 200)
    {
        kake_udon_price = price;    
        //コンストラクタの処理
         Console.WriteLine("かけうどんは" + kake_udon_price.ToString() + "円です"); 
    }
}

実行した結果は以下の通りです。

うどん玉は100円です
かけうどんは300円です