Java 多态

 

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

 

  多态:使用父类对象的位置也可以使用子类对象的情况就称为多态,

     通俗来说就是,在程序的某个位置即可以使用父类对象,也可以使用子类对象,

     但是,每一个时刻只能使用父类或子类对象中的其中一个,那么,就称为多态。

 

多态的条件:

(1)子类中的方法覆盖了父类中的同名方法。

(2)在某个方法中,通过父类定义对象作为参数,然后,在方法中,通过参数去调用

   子类覆盖父类中的同名方法,由于方法名字在子类与父类中是同名的,

   所以,具体要调用子类中的方法还是父类中的方法,就要通过方法调用时所传递的参数来决定,

   如果,传递的是子类的对象作为参数,则调用子类中的同名方法,

   如果,传递的是父类的对象作为参数,则调用父类中的同名方法。

   所以,就称为多态。

 

 

 

 

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

 

例子:

 

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

//定义了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;

  }

}

 

 

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

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

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

public class MyTest    

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

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

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

 

   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中的“多态”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”

 

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

    

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

进入游戏学习与训练