class Fu
{
int num= 4;//要是私有不能访问。
}
class Zi extends Fu
{
int num=5;
void show()
{
System.out.println(num);//父类对象的引用
}
}
class ExtendsDemo2
{
public static void main(String[] args)
{
Zi z= new Zi();
z.show();
System.out.println(z.num+ "............."+z.num);
}
}
这个的结果是:4
4.........4
应该是:5
5.........5 才对吧!因为子类继承父类,变量不会被覆盖,这个时候num前面有个隐式的this,也就是调用自身的变量,为不是父类的
要是把show函数中的改成System.out.println(super.num);结果就会是
4 //这里的4调用的是show函数里的num,函数里的num因为加了super所以调用的父类的num=4;
5...........5 //这里的两个5调用的是子类的变量num=5,与函数里的num无关,没有起到赋值或者覆盖效果,所以还是子类自身的5 |