第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行下。
実行画面
インスタンス=オブジェクトを作る度に、
インスタンス変数を初期化している様子がわかります。
次話では、コンストラクタのオーバーロードを学びます。
第2話へ 第4話へ
VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第2部
初心者のための
VC++による C言語 入門 C++ 入門 基礎から応用まで第3部