免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: hailinbo
打印 上一主题 下一主题

关于类继承的问题. [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-07-28 01:14 |只看该作者
得到的输出如下:
----- test case 1 begin------
null
null
----- test case 1 end------

----- test case 2 begin------
alias=sub object
alias=sub object
----- test case 2 end------

论坛徽章:
0
12 [报告]
发表于 2006-07-28 01:33 |只看该作者
测试1和测试2唯一不同的地方在:
测试1:
TestSuperClass test = new TestSubClass();

测试2:
TestSubClass test = new TestSubClass2();

但在测试1中的test.setObject(object),调用的是父类的方法(? Q1),同时给父类的类变量orignObject赋值,可接下来在父类中release()中调用的getObject()却是子类的方法(? Q2),因为是子类的类变量是空,所以返回了,没有任何输出

而在测试2中的test.setObject(object),调用的是子类的方法(? Q3),同时给子类的类变量赋值,接下来在父类中的release()中调用的getObject()却是子类的方法(? Q4),而接着访问的setObject()却是父类中的方法(? Q5),导致无法将子类中的类变量置为null,也就意味着release()没有实际起到作用,所以接下在子类中的getObject()还可以继续得到子类变量orignObject

[ 本帖最后由 door.xiao 于 2006-7-28 10:30 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2006-07-28 09:39 |只看该作者
其实就是说,子类在继承父类的时候,其实重新复制了一份父类的属性在内存中,
在子类中重新定义变量和方法时,将覆盖原有的属性和方法.子类调用父类方法时,其实改变的只是父类的属性,
如果子类没有重新定义变量和方法,那么子类将调用父类的方法。
应该就是这样吧,不知道对不对

论坛徽章:
0
14 [报告]
发表于 2006-07-28 09:41 |只看该作者
还有,十楼中的程序我在eclipse中无法通过,说是找不到main()方法,不知道怎么回事,

论坛徽章:
0
15 [报告]
发表于 2006-07-28 10:27 |只看该作者
to eve8517,
我把文件的顺序调整了一下,你按照顺序来生成每个class试试看。另外,请检查是否配置好了JDK。

论坛徽章:
0
16 [报告]
发表于 2006-07-29 17:32 |只看该作者
up

论坛徽章:
0
17 [报告]
发表于 2006-08-02 16:08 |只看该作者
up

论坛徽章:
0
18 [报告]
发表于 2006-08-04 15:02 |只看该作者
好东西
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP