父类:
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)?请高手指点!
解决方案 »
- 《代码大全第二版》书中的小疑问
- TextFeild如何实现数据关联
- 解释下!
- 在线求:能不能在 一个类里面写一个方法,这个方法,每隔一段事件(时间可设定)自动访问数据库,并将数据读出来?
- 请问一下,定义String变量时用new和不用有什么区别???
- 关于java和SWT表格的几个问题?请大家指教
- 一道简单的JAVA事件驱动题,编译出错,请求解答?
- Insets这个类是干什么的,怎么用,谢谢,给分!
- 各位阿哥阿姐,不好意思的问一个问题,哪里有jbuilder的教程下载的?新年快乐~~~
- 初来乍到,一个小问题,可用分怎么算的?
- JTextArea如何控制显示的行数?
- runtime 如何隐藏CMD窗口
是什么意思?
谁能清楚解释一下?
在这个地方的意思是一样的啊!!?
多态只针对方法而言,而且不能是static或private或final的
而如果出现多态(同时满足:1.有继承 2.有父类引用指向子类对象 3.有方法重写)则调用实际所指对象的方法:dd.ddd();就是子类的ddd()方法.[他重写类父类的ddd()方法]
----
System.out.println(dd.i);
dd.i是TBase.i,这很正常,因为你本来声明的就是TBase
----------------