コンストラクタとは

 

前提オブジェクト指向プログラミング言語

 

コンストラクタとは、

new () した時、つまりインスタンス化した瞬間に実行されるメソッド

construct:組み立てる、構成する、建設する。

 

hoge = 型 new hogege();
この時にクラス hogege に記述されている、コンストラクタという関数が呼ばれる。

 

以下サンプルコード。 C# で記述。
Form1 の New Frame をクリックすると、FormNew が立ち上がるというコード。

f:id:koshinRan:20170318013435j:plain
 ※)今回のコンストラクタ説明に不要なコードは消した。
Form1FormNew は別ファイル。
( 基本、1 ファイルにつき1クラス。
1 つのファイルに複数のクラスを書くこともできるらしい。非推奨。)

public partial class Form1 : Form
{
    private void newFrameToolStripMenuItem_Click(object sender, EventArgs e)
    {
        FormNew fN = new FormNew();
    }
}


public partial class FormNew : Form
{
    //コンストラクタ。new した瞬間に呼ばれる。
    public FormNew()
    {
        this.Show();
    }
}

Form1 のクラスで、new FormNew() した瞬間に、
FormNew クラスの、 public FormNew() 関数が呼ばれた。
コンストラクタ( FormNew() )には、this.Show() と
記述したので、インスタンス化した瞬間にフォームFormNew が表示する。
(this は、作られたインスタンスのこと。上記では fN になる。)

 

コンストラクタの宣言のルール。( 通常メソッドと異なる点 )

コンストラクタは、クラス名と同じにしなければならない。

コンストラクタには戻り値の型がない。( void でもない )

 

こちらから参照。
http://wa3.i-3-i.info/word13646.html

 

以下は補足 ( 通常メソッドを呼ぶ場合 )

class FormNew にNewTest() 関数が記述されていた場合、この関数を
class Form1 から呼び出すには、

fN.NewTest();

と記述する必要がある。

public partial class Form1 : Form
{
    private void newFrameToolStripMenuItem_Click(object sender, EventArgs e)
    {
        FormNew fN = new FormNew();
       
        fN.NewTest();
    }
}


public partial class FormNew : Form
{
    //コンストラクタ。new した瞬間に呼ばれる。
    public FormNew()
    {
        this.Show();
    }
   
    //明示的に呼び出さないと使えない。
    public void NewTest(){
        MessageBox.Show("Hi");
    }
}

 

以上。
ちなみに、対義語はデストラクタ(destructor:廃物焼却炉)