CSDN博客

img fengzhaopeng

polymorphic--dynaminc binding

发表于2008/10/2 19:46:00  136人阅读

public class PrivateOverride
{
 private void f(){
  System.out.println("private f()");
 }
 public static void main(String [] args)
 {
  PrivateOverride po=new Derived();
     po.f();
 }
}
class Derived extends PrivateOverride
{
 public  void f(){
  System.out.println("public f()");
 }
}

因为private voidf(){}而private 隐式地申明为final 所以po.f();这一调用与private void f(){}在编译的时候就绑定了,所以就会调用private void f(){};

而如果将 private 更改为public ,因为class Derived extends privateOverride{}中也有一个public void f(){},就会造成重载.会造成运行时的动态绑定(即将po.f()与

Class Derived 中的public void f(){}绑定.),所以会调用class Derived中的public void f(){}.

终于搞明白了.

又进了一小步.

hooooo!!

继续加油!!


 

0 0

相关博文

我的热门文章

img
取 消
img