「スーパークラスのコンストラクタを指定してみる」の編集履歴(バックアップ)一覧はこちら
「スーパークラスのコンストラクタを指定してみる」(2006/02/16 (木) 18:27:07) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*スーパークラスのコンストラクタを指定してみる
前回のサンプルを試してみてみると
サブクラスのオブジェクトを作成した場合、まずスーパークラスのコンストラクタが実行され
その次にサブクラスのコンストラクタが実行されていることに気づかれたかと思います
このようにサブクラスのオブジェクトを作成したら
自動的にスーパークラスのコンストラクタが実行されます
ですが、コンストラクタをオーバーロードし複数のコンストラクタが存在する場合
呼び出されるのは引数が何も無いコンストラクタが必ず呼び出されてしまいます
そこで引数のついたスーパークラスのコンストラクタを呼び出すには
super(引数、引数、・・);
を使用します
ここで引数を指定することで、該当するコンストラクタが呼び出されます
引数がなければ引数無しのコンストラクタが呼び出されます
だだしsuper()を使用する条件として
サブクラスのコンストラクタの&html(<b>一行目</b>)になければなりません
*****サンプル
//りんごクラス
class SuperClass {
//変数
public int cnt;
//コンストラクタ
public SuperClass(){
System.out.println("スーパークラスのコンストラクタ");
}
//コンストラクタ2
public SuperClass(int x, int y){
System.out.println("スーパークラスのコンストラクタ2");
System.out.println("引数は" + x + "と" + y);
}
//メソッド
public void Out(){
System.out.println("スーパークラスのメソッド");
}
}
class SubClass extends SuperClass{
//コンストラクタ
public SubClass(){
System.out.println("サブクラスのコンストラクタ");
}
//コンストラクタ2
public SubClass(int x, int y){
super(x, y);
System.out.println("サブクラスのコンストラクタ");
}
//メソッド
public void SubOut(){
System.out.println("サブクラスのメソッド");
}
}
class Sample {
public static void main(String args[])
{
//サブクラス作成
SubClass test = new SubClass(10, 50);
//スーパークラスの変数
test.cnt = 10;
//スーパークラスのメソッド
test.Out();
//サブクラスのメソッド
test.SubOut();
}
}
****■[[戻る>クラス]]
*スーパークラスのコンストラクタを指定してみる
前回のサンプルを試してみてみると
サブクラスのオブジェクトを作成した場合、まずスーパークラスのコンストラクタが実行され
その次にサブクラスのコンストラクタが実行されていることに気づかれたかと思います
このようにサブクラスのオブジェクトを作成したら
自動的にスーパークラスのコンストラクタが実行されます
ですが、コンストラクタをオーバーロードし複数のコンストラクタが存在する場合
呼び出されるのは引数が何も無いコンストラクタが必ず呼び出されてしまいます
そこで引数のついたスーパークラスのコンストラクタを呼び出すには
super(引数、引数、・・);
を使用します
ここで引数を指定することで、該当するコンストラクタが呼び出されます
引数がなければ引数無しのコンストラクタが呼び出されます
だだしsuper()を使用する条件として
サブクラスのコンストラクタの&html(<b>一行目</b>)になければなりません
*****サンプル
class SuperClass {
//変数
public int cnt;
//コンストラクタ
public SuperClass(){
System.out.println("スーパークラスのコンストラクタ");
}
//コンストラクタ2
public SuperClass(int x, int y){
System.out.println("スーパークラスのコンストラクタ2");
System.out.println("引数は" + x + "と" + y);
}
//メソッド
public void Out(){
System.out.println("スーパークラスのメソッド");
}
}
class SubClass extends SuperClass{
//コンストラクタ
public SubClass(){
System.out.println("サブクラスのコンストラクタ");
}
//コンストラクタ2
public SubClass(int x, int y){
super(x, y);
System.out.println("サブクラスのコンストラクタ");
}
//メソッド
public void SubOut(){
System.out.println("サブクラスのメソッド");
}
}
class Sample {
public static void main(String args[])
{
//サブクラス作成
SubClass test = new SubClass(10, 50);
//スーパークラスの変数
test.cnt = 10;
//スーパークラスのメソッド
test.Out();
//サブクラスのメソッド
test.SubOut();
}
}
****■[[戻る>クラス]]
表示オプション
横に並べて表示:
変化行の前後のみ表示: