4.3Java多态(polymorphism)

4.3Java多态(polymorphism)

多态的定义:

  • 指同一个方法的调用,由于对象不同可能会有不同的行为。

  • 现实生活中,同一个方法,具体实现会完全不同

对象:人,方法:休息

  1. 小孩,玩游戏

  2. 程序员,敲代码

多态的要点:

多态指的是方法的多态而不是属性的多态

必要条件:

  • 必须要有继承

  • 必须要有方法的重写

  • 必须要父类引用指向子类对象

  • 父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。

package cn.Lucifer.oo;

/**
* 测试多态
* @author Lucifer
*/
//写三个类,第一个是Animal
class Animal{
   //叫一声的方法
   public void shout(){
       System.out.println("叫了一声!");
  }
}

//第二个类,狗
class Dog extends Animal{
   //重写方法
   public void shout(){
       System.out.println("汪汪汪");
  }

   //还有一个专属方法
   public void seeDoor(){
       System.out.println("看门");
  }
}

//再写一个类,猫
class Cat extends Animal{
   //重写方法
   public void shout(){
       System.out.println("喵喵喵");
  }
}
public class TestPolym {
   public static void main(String[] args) {
       //创建Animal对象
       Animal a = new Animal();
       animalCry(a );
  }

   //为了方便调用写一个方法
   static void animalCry(Animal a){
       a.shout();
       /*
       a的类型是Animal
       Dog是子类对象,之类对象给了父类引用
       父类的类型指向了子类的对象,这时候就发生了多态
       传的对象不一样,所以调用的shout方法也不一样,根据实参确当
       存在目的为了少些重载
       下面加子类可以方便调用
        */

       Dog d = new Dog(); //把Dog d 改为Animal d没有问题,到调用方法的时候还是运行Dog的方法
//       animalCry(d);
       animalCry(new Cat());
  }
}

 

It's a lonely road!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/14615186.html