首页 > 技术文章 > Java多态与动态绑定

jqctop1 2015-07-21 16:39 原文

1.多态

   一个实例变量可以引用多种不同类的实例的现象称为多态,这些类之间是父类与子类的关系,即父类引用可以指向子类的对象,这样参数是父类类型的方法也可以用来处理子类。

2.动态绑定

   父类有多个子类,且多个子类都继承了父类中某个方法并以不同实现重写了。由于多态,父类引用可能指向的是子类对象,在使用父类引用调用该方法时,虚拟机可以在运行时决定调用对象的实际类型中的实现,即所谓的动态绑定。

3.静态绑定

  静态绑定即在编译时根据引用声明的类型来决定调用哪个实现,调用private方法、final方法以及static方法时就是采用静态绑定,访问类的属性时也采用静态绑定。

 

class Parent
 {
   public int value = 9;
   
   public int method()
   {
      return value;
   }
    
   public void printValue()
   {
       System.out.println(value);          //静态绑定,隐式参数this的声明类型是Parent,因此访问的是父类中的value
       System.out.println(method());       //动态绑定,隐式参数this传递进来的实际类型是Child,因此调用的是子类中的method
   }
 }
 
 class Child extends Parent
 {
   public int value = 8;
    
   public int method()
   {
      value--;
      return value;
   }
 }
 
 public class Test extends Parent
 {
    public static void main(String[] args)
    {
        Parent child = new Child();
        child.printValue();
    }
 }

 

 

 

参考资料 《Java核心技术》

推荐阅读