polymorphic--dynaminc binding

来源:互联网 发布:淘宝 女装的退款率 编辑:程序博客网 时间:2024/06/18 12:59

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!!

继续加油!!


 

原创粉丝点击