什么是运行时绑定?

Reg*_*arg 6 java

我正在浏览android开发培训文档并偶然发现:

"Intent是一个在不同组件之间提供运行时绑定的对象(例如两个活动)."

任何人都在关心解释什么是运行时绑定?

谢谢!

Ash*_*ish 6

继承创建类型兼容性.它允许超类引用引用子类的对象.(反向不是真的).

引用子类对象的超类引用只能用于访问子类的继承和重写方法.使用超类的引用无法访问子类中新定义的成员.

class A  {
 void f1() {  //this holds address of object of B     
   System.out.println("A f1");
 }
 void f2() {
   System.out.println("A f2");
 }
}//A


class B extends A {

 void f3() {   //new method     
   System.out.println("B f3");
 }

 void f2() { //this holds address of object of B     
   System.out.println("B f2 starts");
   f3(); //this.f3()
   System.out.println("B f2 ends ");

 } }  //B


class TypeCmptbl {
   public static void main(String args[]) {
      A ref; //reference of A
      ref = new B();//Object of B

      //ref.inherited()  allowed
      ref.f1();

      //ref.overridden() allowed
      ref.f2();

     //ref.newMembersOfChild() not allowed
    //ref.f3();

  }//main
}
Run Code Online (Sandbox Code Playgroud)

考虑一下这句话

  ref.f2();
Run Code Online (Sandbox Code Playgroud)

这里ref是A类的引用,它有B类对象的地址f2()是一个重写方法.

当编译器检测到这样的语句时,它不会将函数调用与任何定义绑定.它只验证通话.

此类调用的绑定留给运行时环境.在程序运行时,系统识别对象的数据类型,并使用对象类提供的函数定义绑定函数调用.函数调用和函数定义之间的这种类型的绑定称为"后期绑定"或" 运行时绑定 "或" 运行时多态 "或" 动态方法调度 ".