多态

多态指的是同一方法调用,由于对象不同可能会有不用的行为。在现实生活中,同一个方法,具体实现有可能完全不同,例如你叫一个人去玩,学霸就可能偷偷溜去学习,有的人则是跑去看电影,而我就有可能去睡觉,所以玩()这个方法,可能会有不同的行为,也称为方法的多态,属性是没有多态的。

多态实现需要三个必要条件:

  • 1、父类对象指向之类对象
  • 2、继承
  • 3、重写

看一个具体的小例子:

**package com.liuzeyu12a.OOT;
/** * 实现多态的三个必要条件 * 1、父类对象指向之类对象 * 2、继承 * 3、重写 */
public class TestPolym {
   
    public static void main(String[] args) {
   
        Animal a = new Animal();
        animalCry(a);
        Dog dog = new Dog();
        animalCry(dog);  //出现多态,或者
        Animal dog2 = new Dog();  //自动向上转型(编译器只认为这个dog是Animal 因此不能调用Dog类的方法)
        animalCry(dog2);   //打上动物标签的狗 仍然还是狗
        //dog2.seeDoor(); 不能被执行 没有这个方法
        
        Dog dog22 = (Dog)dog2; //向下转型
        dog22.seeDoor();    //可以调用Dog类的方法
        Cat cat = new Cat();
        animalCry(cat);
    }
    //测试方法
    static  void animalCry(Animal animal){
   
        animal.shut();
    }
}
class Animal{
   
    public void shut(){
   
        System.out.println("动物叫了一声.");
    }
}
class Dog extends Animal{
   
    public void shut(){
   
        System.out.println("狗叫了汪汪汪.");
    }
    public void seeDoor(){
   
        System.out.println("狗看门..");
    }
}
class Cat extends Animal{
   
    public void shut(){
   
        System.out.println("猫叫了喵喵喵.");
    }
}**

一边学习一边补充。