スーパークラスのコンストラクタを指定してみる
前回のサンプルを試してみてみると
サブクラスのオブジェクトを作成した場合、まずスーパークラスのコンストラクタが実行され
その次にサブクラスのコンストラクタが実行されていることに気づかれたかと思います
このようにサブクラスのオブジェクトを作成したら
自動的にスーパークラスのコンストラクタが実行されます
ですが、コンストラクタをオーバーロードし複数のコンストラクタが存在する場合
呼び出されるのは引数が何も無いコンストラクタが必ず呼び出されてしまいます
そこで引数のついたスーパークラスのコンストラクタを呼び出すには
サブクラスのオブジェクトを作成した場合、まずスーパークラスのコンストラクタが実行され
その次にサブクラスのコンストラクタが実行されていることに気づかれたかと思います
このようにサブクラスのオブジェクトを作成したら
自動的にスーパークラスのコンストラクタが実行されます
ですが、コンストラクタをオーバーロードし複数のコンストラクタが存在する場合
呼び出されるのは引数が何も無いコンストラクタが必ず呼び出されてしまいます
そこで引数のついたスーパークラスのコンストラクタを呼び出すには
super(引数、引数、・・);
を使用します
ここで引数を指定することで、該当するコンストラクタが呼び出されます
引数がなければ引数無しのコンストラクタが呼び出されます
だだしsuper()を使用する条件として
サブクラスのコンストラクタのhtmlプラグインエラー: このプラグインを使うにはこのページの編集権限を「管理者のみ」に設定してください。になければなりません
ここで引数を指定することで、該当するコンストラクタが呼び出されます
引数がなければ引数無しのコンストラクタが呼び出されます
だだしsuper()を使用する条件として
サブクラスのコンストラクタのhtmlプラグインエラー: このプラグインを使うにはこのページの編集権限を「管理者のみ」に設定してください。になければなりません
サンプル
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(); } }