首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

上转型对象的有关问题(见扫描)

2012-02-04 
上转型对象的问题(见扫描)代码见下:http://www.i2i.org.cn/webexhibit/09251.jpghttp://www.i2i.org.cn/we

上转型对象的问题(见扫描)
代码见下:
http://www.i2i.org.cn/webexhibit/09251.jpg
http://www.i2i.org.cn/webexhibit/09252.jpg
http://www.i2i.org.cn/webexhibit/09253.jpg
这三页书是讲上转型对象的。
其中有一个例子。又看不懂。
a=new   B();     //   创建了一个B的对象。a是子类对象的上转型变量
a.n=0.618;
a.m=200;
a.f()   ;     //输出的是n=0.618   m=200
a.g();     //输出的是n=12   m=200,这里不解,n不是被被a.n=618;改过了吗?怎么等于12了,它是什么时候等于12的?


[解决办法]
我的理解是B类里的n属性把A类里的n属性本来就覆盖掉了,你A类里再怎么改n的属性都影响不了B类中的n属性,m的属性是继承来的,所以修改会影响,如果你一定要输出A的n属性(就是A的g()方法),就用A a=new A();a.g();
[解决办法]
a=new B(); // 创建了一个B的对象。a是子类对象的上转型变量
这时如果B覆盖过被调用方法,是会调用子类的方法
其次当调用子类方法的时候,先会在子类中找与要用到的变量同名的成员变量,如果没找到,就去
父类继续找
如果B没有覆盖该方法,则调用A里定义的,找变量也从A开始找

热点排行
Bad Request.