現在javaBronzeをとるために勉強しています。このようなコードができて来た時にどのような順番で見ていけば良いのかわからず、無駄に時間が過ぎてしまい、60門ある問題を全て解ききれませんでした。
アドバイスを頂けましたら幸いです。
また、疑問点や認識についてもご教授お願いします。
①mainクラスでインスタンスを生成するとサブクラスのインスタンスが起動し、aに2とbに3を代入する。
この時の
public SubClass(int a){
this.a = a;
}
public SubClass(int a, int b){
this(a);
this.b = b;
とオーバーロードしたコンストラクタが2つありますが後者の方に代入されるという認識をしています。this(a);がちょっと気になりますが。
そして最大の謎がmainクラスでsub.numを呼び出している点です。
サブクラスにnumはないぞ?と思いきや継承しているから存在することになっている。そしてスーパークラスのコンストラクタに1が準備されているからそれがnumに入る。
なので表示結果は1:2:3となる。というなんとなくの認識ですが間違っている部分や認識が少し浅い部分などありましたらご教授お願いします。
コード public class SuperClass{ protected int num; public SuperClass(){ this.num = 1; } public SuperClass(int num){ this.num = num; } コード1 public class SubClass extends SuperClass { private int a; private int b; public SubClass(int a){ this.a = a; } public SubClass(int a, int b){ this(a); this.b = b; } public static void main(String[] args){ SubClass sub = new SubClass(2,3); System.out.println(sub.num + ":" + sub.a + ":" + sub.b ); } }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/25 05:52