Java私有方法覆盖的问题
java吧
全部回复
仅看楼主
level 10
wyl0706
楼主
这段代码的输出是private f(),我很难理解。虽然书上说Private方法被自动认为是final的,不可以被覆盖,但是po指向的对象是Derived啊,他怎么会调用到PrivateOverride里面的方法呢?
难道不应该是这样的么?
2015年11月17日 09点11分
1
level 8
贴吧用户_0EU7UR7
你能编译通过我都感到神奇。。
2015年11月17日 09点11分
2
wyl0706
Think in JAVA上的代码。。。为什么编译不过?没啥问题啊,只是输出出乎我的意料
2015年11月17日 09点11分
贴吧用户_0EU7UR7
@wyl0706
应该会报错找不到方法f()
2015年11月17日 09点11分
贴吧用户_0EU7UR7
回复
@巴尼斯汀森
:理解错了,实例是在入口方法里产生的,有访问权限,我的错。如果是在同包其他类实例化就不能编译。
2015年11月17日 09点11分
贴吧用户_0EU7UR7
回复
@巴尼斯汀森
:这个的原因楼下都有解释,没啥好说的了。你可以直接以子类声明引用类型,然后就会是publicf,引用类型的作用在访问重写的私有方法时就显示出来了。私有方法会覆盖重写方法。
2015年11月17日 09点11分
level 9
微笑的五仁
子类继承父类(浅见)
2015年11月17日 09点11分
3
wyl0706
private方法不能被继承
2015年11月17日 09点11分
level 6
态度is面无表情
po被上转型为父类了,所以po指向的是父类,而private将f()方法对子类隐藏了,所以无法动态绑定
2015年11月17日 09点11分
4
态度is面无表情
这个解释书上都有写,同在看thinking in java
2015年11月17日 09点11分
wyl0706
@态度is面无表情
我也是在看,但是当时没理解透,现在理解了
2015年11月17日 12点11分
level 4
泽gfg
你创建的时候向上转型,屏蔽了不属于PrivateOverride类里的方法和属性。这也是多态的一种现象
2015年11月17日 09点11分
5
level 11
那天你我
根本就没覆盖 对子类不可见 你可以试一下多态调用f
2015年11月17日 09点11分
7
wyl0706
是的,没有覆盖,我问题描述有问题
2015年11月17日 10点11分
level 8
aodiquan
java的继承不就是c++的虚函数么
2015年11月17日 10点11分
8
wyl0706
不懂C++
2015年11月17日 11点11分
wyl0706
@wyl0706
说实话没看懂你的图,现在我搞明白了,应该和你的意思差不多。
2015年11月17日 12点11分
1