Пожалуйста, объясните следующее поведение.
class Base
{
public int num = 3;
public int getNum()
{
return num;
}
public void setNum(int num)
{
this.num = num;
}
}
class child
extends Base
{
public int num = 4;
public child()
{
}
public child(int i)
{
this.num = i;
}
public int getNum()
{
return num;
}
public void setNum(int num)
{
this.num = num;
}
}
public class Main
{
public static void main(String[] args)
{
Base obj2 = new child();
System.out.println(obj2.num);
System.out.println(obj2.getNum());
Base obj3 = new child(10);
System.out.println(obj3.num);
System.out.println(obj3.getNum());
}
}
Выход:
3
4
3
10
Здесь показано, как obj2.num и obj3.num по-прежнему указывают на значение 3, назначенное в переменной экземпляра базового класса. Не будет переопределена как obj2.getNum () и obj3.getNum ().
Спасибо заранее.