定义: 某一类事物的多种存在形态
- 例如:动物中猫,狗
- 猫这个对象对应类型是猫类型
猫 x = new 猫();
同时猫也是动物的一种,也可以把猫称为动物
动物 y = new 猫();
动物是猫和狗具体事物中抽取出来的父类型。
父类型引用指向了子类对象。
程序中体现:
父类或者接口的引用(接收)自己的子类对象。
多态的特点
- 成员函数:
- 编译时:要查看引用变量 所属的类是否有所调用的成员。
- 在运行时:要查看对象所属类中是否有所调用的成员。
- 成员变量:
- 只看引用变量所属的类。
abstract class Animal{
abstract void eat();
}
class Cat extends Animal{
public void eat(){
System.out.println("猫吃鱼");
}
public void mouse(){
System.out.println("猫抓老鼠");
}
}
class Dog extends Animal{
public void eat(){
System.out.println("狗吃肉");
}
public void lookHome(){
System.out.println("汪汪汪");
}
}
public class DuoTaiDemo{
public static void main(String[] arg){
method(new Cat());
method(new Dog());
}
//判断是哪一个类实例
public static void method(Animal a){
a.eat();
if(a instanceof Cat){
Cat c = (Cat)a;
c.mouse();
}else if(a instanceof Dog){
Dog d = (Dog)a;
d.lookHome();
}
}
}