同一个对象,在不同时刻表现出的不同形态
举例:猫
我们可以说猫是猫 猫 cat =new 猫();
我们可以说猫是动物 动物 animal=new 猫();
这里猫在不同时刻表现出了不同的形态,这就是多态
多态的前提和实现
1.有继承/实现关系
2.有方法的重写
3.有父类引用指向子类对象
使用多态创建的类,虽然占用了子类大小的内存,但是只能访问父类中的变量和方法,该类自己定义的方法不能访问,这也是多态的弊端
如果访问子类中重写了父类的方法,调用时,会访问子类中重写的方法
多态的好处
package com.class_decoration;
public class test {
public static void main(String[] args) {
Control control =new Control();
Dog dog =new Dog();
Cat cat =new Cat();
Animal animal=new Animal();
control.control(dog);
control.control(cat);
control.control(animal);
}
}
class Control {
public void control(Animal animal)//这里可以直接写他们的父类,传过来的是实参,相当于,Animal animal=new Dog/cat();
{//如果不写父类,则要写两个方法,一个接收dag类型,一个接收cat类型
animal.eat();
}
}
class Animal {
public void eat(){
System.out.println("animal吃东西");
}
}
class Dog extends Animal{
@Override
public void eat()
{
System.out.println("dog吃骨头");
}
}
class Cat extends Animal {
@Override
public void eat(){
System.out.println("小猫吃鱼");
}
}



