以下のコードの処理について質問です。
public class SuperClass{
private int num=10;
void test(){
System.out.println(num);
}
}
public class SubClass extends Superclass{
private int num=20;
public static void main(String[] args){
SubClass sub = new SubClass();
sub.test();
}
}
このコードでは、testメソッドはスーパークラスが所持しており、
SubClassクラスではsub変数をインスタンス化していると考えています。
sub.test()ではsub変数に代入されているnum=20で処理されると思いましたが、
実行するとスーパークラスのnum=10が表示されます。
ここで2つ疑問が発生しました。
①SubClass型でSubClassクラスをインスタンス化してsub変数に代入しているはずですが、
スーパークラスのprivateフィールドが代入されているのは何故でしょうか。
②privateフィールドはサブクラスからアクセスできるのでしょうか。
ご教授よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー