Java 动态绑定

 

接下来,我们准备为大家介绍“动态绑定”。

 

  动态绑定:当对象调用一个方法时,系统会首先在当前对象所对应的类中查找对应的方法,

       如果,没有找到,就会向子类的父类中查找,

       如果,还是没有找到就继续往上一层的父类查找,直到找到为止,

       一旦找到一个对应的方法,则停止查找,并立即调用该方法。

 

 

 

  接下来,我们结合例子作进一步的学习。

 

例子:

 

//----------------------------------------------------------------------------------------------//

//定义了wp类

//----------------------------------------------------------------------------------------------//

class wp

{

  int wpx;  //定义了属性wpx

 

  wp()     //构造函数wp

  {

    wpx = 0;

  }

 

  void mx()    //定义了mx方法

  {

     wpx = wpx + 1;

  }

}

 

//----------------------------------------------------------------------------------------------//

//定义了Gun类,并继承了父类wp

//----------------------------------------------------------------------------------------------//

class Gun extends wp

{

  int gx;

 

  Gun  //构造函数

  {

     gx = 0;

  }

 

  void mx()     //对父类中的mx方法进行了重新的实现,即在子类中覆盖了父类的mx方法

  {

     gx = gx + 2;

  }

}

 

 

//----------------------------------------------------------------------------------------------//

//定义了ShotGun类,并继承了父类Gun

//----------------------------------------------------------------------------------------------//

class ShotGun extends Gun

{

  int sgx;

 

  ShotGun  //构造函数

  {

     sgx = 0;

  }

}

 

 

//----------------------------------------------------------------------------------------------//

//Mytest类是在第二章“Java开发环境搭建(2)” 学习时创建的

//----------------------------------------------------------------------------------------------//

public class MyTest    

{
 public static void main(String[] args)   //入口方法main
 {

   wp p1= new wp();      //定义了对象p1

   Gun g1 = new Gun();   //定义了对象g1

   ShotGun sg1 = new ShotGun();   //定义了对象sg1

 

 

   test ( sg1 );   //传递了sg1对象作为参数,而它是ShotGun类的对象,

              所以,test方法中的w1所调用的方法应该是ShotGun类中的mx方法

              但是,ShotGun类中并没有这个mx的方法,

               所以,系统就会继续从它的父类Gun中查找,而父类Gun中刚好有mx方法,

               所以,就调用了Gun类中的mx方法。

 

 

   test ( p1 );   //传递了p1对象作为参数,而它是wp类的对象,

             所以,test方法中的w1所调用的方法是wp类中的mx方法

 

   test ( g1 );   //传递了g1对象作为参数,而它是Gun类的对象,

             所以,test方法中的w1所调用的方法是Gun类中的mx方法

  }

 

 //定义了方法test,参数是wp类所定义的对象w1,而方法中通过参数w1去调用方法mx,

 而具体要调用父类还是子类中的mx方法,就要看具体的参数是传递wp的对象还是传递Gun的对象了。

 

 public static void test( wp w1 )  

 {

   w1.mx();

  }

      

 

  非常好,现在,我们已经掌握了Java中的“动态绑定”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”

 

  不要停留在理论规则上面,快动起来吧!

    

(通过游戏模式学习与训练,需要在电脑上运行)

进入游戏学习与训练