一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 640|回复: 8
收起左侧

[编程题] 如果这样的类生成,该怎么办?

[复制链接] |试试Instant~ |关注本帖
TonyJang 发表于 2014-7-6 16:36:50 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
QQ截图20140706163404.png

看第四个就可以,前三个都挺简单

readman 发表于 2014-7-6 17:12:58 | 显示全部楼层
a2.m1() 你看 a2是一个c的实例, 但是c里面没有m1方法. 所以他调用的是B的m1.
a2.m2()同上, 调用的是A中的m2
a2.m3()是C自己的
回复 支持 反对

使用道具 举报

 楼主| TonyJang 发表于 2014-7-6 20:17:07 | 显示全部楼层
readman 发表于 2014-7-6 17:12
a2.m1() 你看 a2是一个c的实例, 但是c里面没有m1方法. 所以他调用的是B的m1.
a2.m2()同上, 调用的是A中的m ...

答案是B'm1 C'm2 A'm3....
回复 支持 反对

使用道具 举报

readman 发表于 2014-7-6 21:04:58 | 显示全部楼层
TonyJang 发表于 2014-7-6 20:17
答案是B'm1 C'm2 A'm3....

c 没有自己的m2啊
回复 支持 反对

使用道具 举报

readman 发表于 2014-7-6 21:07:49 | 显示全部楼层
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -Didea.launcher.port=7532 "-Didea.launcher.bin.path=/Applications/IntelliJ IDEA 13.app/bin" -Dfile.encoding=UTF-8 -classpath "/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/deploy.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/dt.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/javaws.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/jce.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/jconsole.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/management-agent.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/plugin.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/sa-jdi.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/alt-rt.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/alt-string.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charsets.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsse.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/apple_provider.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/dnsns.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/localedata.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/sunjce_provider.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/sunpkcs11.jar:/Users/Readman/Dropbox/美国工作/leetcode/out/production/leetcode:/Applications/IntelliJ IDEA 13.app/lib/idea_rt.jar" com.intellij.rt.execution.application.AppMain C
m1 in B
m2 in A
m3 in C

Process finished with exit code 0
回复 支持 反对

使用道具 举报

阿兰阿兰 发表于 2014-7-6 23:32:08 | 显示全部楼层
C继承了B,B继承了A。同时B覆盖了A中的m1()方法,所以B的m1是自己的方法,m2,m3和A一样;C继承时覆盖了B的m3,所以C的方法是B的m1,A的m2,C自己的m3。  而a2是类C的对象,所以我觉得答案应该是: B‘s m1   A’s m2   C‘s m3 13.

p.s. 我记得我当时自己做的时候就觉得是答案错了,跟小伙伴讨论了一下也是这样觉得。若是理解有误请各位大侠拔刀相助!
回复 支持 反对

使用道具 举报

头像被屏蔽
zcy1848 发表于 2014-7-7 02:25:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

billyli8866 发表于 2014-7-7 12:21:42 | 显示全部楼层
实测,结果和第二组一样
B‘s m1   A’s m2   C‘s m3 13.
回复 支持 反对

使用道具 举报

sqzhang17 发表于 2014-7-7 13:23:56 | 显示全部楼层
我记得我在head first java 里面看过这个~答案应该是有问题的~
如果就调用方法来说的话~我记得这本书里面有一句话非常有用
“The Lowest Win”
就是说对于继承关系来说~如果本类中没有相应的被调用方法的话~就要再继承关系当中找~越矮的类中被overriden的方法才会被调用~

所以只要记住这句话就行了~“The Lowest Win”
所以正确答案应该是大家说的~
B‘s m1   A’s m2   C‘s m3  13
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-5 20:45

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表