父类:
public class TBase {
public int i = 1;
public int ddd()
{
return i;
}
}
子类:
public class AAExtendsBase extends TBase{
public int i = 2;
public int ddd()
{
return i;
}
}
测试类:
public class TTT { public static void main(String arg[]){
TBase tb = new TBase();
TBase dd = new AAExtendsBase();
System.out.println(tb.i);
System.out.println(dd.i);
System.out.println(tb.ddd());
System.out.println(dd.ddd());
}
}大家说说会打印出什么?
结果是:1,1,1,2
第1,3,4个结果可以理解。
但是第2个结果为什么会是1?
其中,我感觉到奇怪的是,子类调用重写的方法(即:dd.ddd()),都是自己重载后的方法。
为什么调用重载的属性却是父类的属性(dd.i)?请高手指点!
public class TBase {
public int i = 1;
public int ddd()
{
return i;
}
}
子类:
public class AAExtendsBase extends TBase{
public int i = 2;
public int ddd()
{
return i;
}
}
测试类:
public class TTT { public static void main(String arg[]){
TBase tb = new TBase();
TBase dd = new AAExtendsBase();
System.out.println(tb.i);
System.out.println(dd.i);
System.out.println(tb.ddd());
System.out.println(dd.ddd());
}
}大家说说会打印出什么?
结果是:1,1,1,2
第1,3,4个结果可以理解。
但是第2个结果为什么会是1?
其中,我感觉到奇怪的是,子类调用重写的方法(即:dd.ddd()),都是自己重载后的方法。
为什么调用重载的属性却是父类的属性(dd.i)?请高手指点!
是什么意思?
谁能清楚解释一下?
在这个地方的意思是一样的啊!!?
多态只针对方法而言,而且不能是static或private或final的
而如果出现多态(同时满足:1.有继承 2.有父类引用指向子类对象 3.有方法重写)则调用实际所指对象的方法:dd.ddd();就是子类的ddd()方法.[他重写类父类的ddd()方法]
----
System.out.println(dd.i);
dd.i是TBase.i,这很正常,因为你本来声明的就是TBase
----------------