第15講 クラスの学習その2
第3話 初期化メソッド=コンストラクタ

コンストラクタとは、設計図からものを作るときに自動的に作られるメソッドで、
オブジェクト=インスタンスの初期化を行うものです。
コンストラクタは、返り値がないのにvoidでもないという特殊なメソッドです。
コンストラクタ名は、クラス名と同じにしなければなりません。
第2話のコードを次のように変更してみましょう。
<<p.java>>
class p{
  public int i;
  public int j;
  p(){
    System.out.println("iを3にjを5に初期化します。");
    i=3;
    j=5;
  }

  public int f(int a,int b){
    return(a+b);
  }
  public int g(int a,int b){
    return(a-b);
  }
  public int h(int a,int b){
    return(a*b);
  }
}


<<x.java>>
import java.io.*;
class x{
  public void main(String args[]){
    p p1=new p();
    //p1.i=3;
    //p1.j=5; 2行を注釈文することによって無効化

    System.out.println("p1.iの中身:"+p1.i+" p1.jの中身:"+p1.j);
    System.out.println("p1.i+p1.j="+p1.f(p1.i,p1.j));
    System.out.println("p1.i-p1.j="+p1.g(p1.i,p1.j));
    System.out.println("p1.i×p1.j="+p1.h(p1.i,p1.j));
  }
}
実行結果
入門
iとjがインスタンス化=実体化されるとき、それぞれ3と5に初期化されています。
そこで問題です。x.javaコードをさらに次のように変更したら実行画面はどうなるでしょうか。
import java.io.*;
class x{
  public void main(String args[]){
    p p1=new p();
    System.out.println("p1.iの中身:"+p1.i+" p1.jの中身:"+p1.j);
    System.out.println("p1.i+p1.j="+p1.f(p1.i,p1.j));
    System.out.println("p1.i-p1.j="+p1.g(p1.i,p1.j));
    System.out.println("p1.i×p1.j="+p1.h(p1.i,p1.j));
    p p2=new p();  //2つ目の実体化=設計図から2つめのオブジェクトを作る
    System.out.println("p2.iの中身:"+p2.i+" p2.jの中身:"+p2.j);
    System.out.println("p2.i+p2.j="+p2.f(p2.i,p2.j));
    System.out.println("p2.i-p2.j="+p2.g(p2.i,p2.j));
    System.out.println("p2.i×p2.j="+p2.h(p2.i,p2.j));

 
 }
}
実行画面は30行下。
















実行画面
Java
インスタンス=オブジェクトを作る度に、
インスタンス変数を初期化している様子がわかります。

次話では、コンストラクタのオーバーロードを学びます。

第2話へ 第4話へ

戻る

VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部