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