JAVA多态

简单一点说呢,多态就是表现多种形态的能力的特征。更术语化一点说,同一个实现接口,使用不同的实例而执行不同的操作。

我们先看以下代码,首先我们定义一个父类:

Code:
  1. public class Person   
  2. {   
  3.           public void say()   
  4.          {   
  5.                       System.out.println("大家好,我是父类Person中的say方法");   
  6.          }   
  7. }  

然后我们再定义两个子类,继承自Person类,并都重写了父类中的say方法

Code:
  1. public class Student extends Person   
  2. {   
  3.               public void say()   
  4.              {   
  5.                             System.out.println("大家好,我是子类Student中的say方法");   
  6.              }   
  7. }  
Code:
  1. public class Teacher extends Person   
  2. {   
  3.               public void say()   
  4.              {   
  5.                           System.out.println("大家好,我是子类Teacher中的say方法");    
  6.              }   
  7. }  

然后,我们再编写一个测试类

Code:
  1. public class Test   
  2. {   
  3.               public static void main(String args [])   
  4.              {   
  5.                         hello(new Student());   
  6.                         hello(new Teacher());   
  7.              }   
  8.               public static void hello(Person person)   
  9.              {   
  10.                           person.say();   
  11.              }   
  12. }  

 

在以上代码MAIN方法中,hello方法的参数类型是父类Person类型的,但是我们在调用时,传入的参数是其子类类型的,程序运行

后的结果是,输出了两个子类的SAY方法

以上,我们就简答的实现了一个多态。

如何实现多态?

1.子类重写父类的方法

Student类,Teacher类都是Person类的子类,两个子类都重写了父类中的say方法.,因此具有不同的方法实现。

2.把父类类型作为参数类型,该父类及其子类的对象作为参数传入

在MAIN方法中的hello方法中,参数类型是Person类型的,而我们在调用的时候,传入的参数是其子类的对象.

这样就避免了为每一个子类编写一个hello方法

3.运行时,根据实际创建的对象类型决定调用哪个方法

这也正是多态的实现机制。一般称为动态绑定。在运行时,JVM会根据实际创建的对象类型决定使用哪个方法。

这样做的好处是,能减少代码的编写量,也能大大的提高代码的可读性以及可扩展性。

你可能感兴趣的:(JAVA多态)