Re: [问题] 关于向上转型

楼主: jackblack   2016-10-09 02:07:43
※ 引述《DisdainU (茎茎濡吮汁)》之铭言:
: class Derived extends PrivateOverride{}
: public class PrivateOverride{
: private void f(){
: System.out.println("private f()");
: }
: public static void main(String[] args){
: PrivateOverride p=new Derived();
: p.f();
: }
: }
: /* output:
: private f()
: */
: 想问的是 既然base class的f()是private
: 也就代表在Derived中看不到f()
: 那为什么例子中却可以执行出结果?
: 手机排版 请见谅
:
作者: v9290026 (CH)   2016-10-09 02:19:00
推!
作者: DisdainU (茎茎濡吮汁)   2016-10-09 02:47:00
意思是说,如果我在Derived中加入同样的f(),但将此method改成public(意味两个f()为不一样的method只是名字一样),其余不变,执行结果依然是呼叫private method,是因为java在操作物件是先以reference的型别为主。我这样理解有误吗?
作者: haha02 (来人!上夹棍!)   2016-10-09 03:42:00
应该是因为private method无法被override 两者视为不同的method吧你到Derived#f()[email protected]如果会表示没有override到
作者: DisdainU (茎茎濡吮汁)   2016-10-09 12:52:00
了解了!谢谢解答
作者: v9290026 (CH)   2016-10-09 17:26:00
[email protected]

Links booklink

Contact Us: admin [ a t ] ucptt.com