第15講 クラスの学習その2
第4話 コンストラクタのオーバーロード
コンストラクタのオーバーロードとは、異なる引数でコンストラクタを再定義することです。
<<p.java>>
class p{
public int i;
public int j;
p(){
System.out.println("iを3にjを5に初期化します。");
i=3;
j=5;
}
p(int a,int b){ //コンストラクタのオーバーロード(異なる引数でのコンストラクタの再定義)
System.out.println("iとjを引数で初期化する。");
i=a;
j=b;
}
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 static void main(String args[]){
p p1=new p(5,6); //インスタンスする際にiとjを5と6に初期化する。
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));
}
}
実行結果
p.javaのコードは次のようにも書けることはすでに学んでいます。
class p{
public int i;
public int j;
p(){
System.out.println("iを3にjを5に初期化します。");
i=3;
j=5;
}
p(int i,int j){ //コンストラクタのオーバーロード(異なる引数でのコンストラクタの再定義)
System.out.println("iとjを引数で初期化する。");
this.i=i;
this.j=j;
}
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);
}
}
this.i=i;は同じiでも違うものです。
右辺のiはこのクラスのiで、右辺のiは引数のiです。
さらに、次のようにオーバーロードして
class p{
public int i;
public int j;
p(){
System.out.println("iを3にjを5に初期化します。");
i=3;
j=5;
}
p(int i,int j){ //コンストラクタのオーバーロード(異なる引数でのコンストラクタの再定義)
System.out.println("iとjを引数で初期化する。");
this.i=i;
this.j=j;
}
p(String c){ //コンストラクタのオーバーロード(異なる引数でのコンストラクタの再再定義)
System.out.println(c);
i=0;
j=0;
}
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 static void main(String args[]){
p p1=new p("iとjをそれぞれ0に初期化");
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(12,26);
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));
p p3=new p();
System.out.println("p3.iの中身:"+p3.i+" p3.jの中身:"+p3.j);
System.out.println("p3.i+p3.j="+p3.f(p3.i,p3.j));
System.out.println("p3.i-p3.j="+p3.g(p3.i,p3.j));
System.out.println("p3.i×p3.j="+p3.h(p3.i,p3.j));
}
}
とすると実行画面はどうなりますか。
答えは30行下。
実行画面
p p1=new p("iとjをそれぞれ0に初期化");
p p2=new p(12,26);
p p3=new p();
でそれぞれ異なって初期化されています。
第3話へ 第5話へ
VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第2部
初心者のための
VC++による C言語 入門 C++ 入門 基礎から応用まで第3部