1.定义
同一个行为在不同情况下有不同的表现形式(同一个接口使用不同实例而执行不同操作)
2.优点
(1)消除类型之间的耦合关系(类型耦合:左边类型必须等于右边类型)
(2)可替换性
(3)可扩充性
(4)接口性
(5)灵活性
(6)简化性
3.多态存在的三个必要条件
(1)继承
(2)重写
(3)父类引用指向子类对象
4.Demo
abstract class Animal
{
abstract void eat();
}
class Cat extends Animal
{
public void eat()
{
System.out.println("吃鱼");
}
public void catchMouse()
{
System.out.println("抓老鼠");
}
}
class Dog extends Animal
{
public void eat()
{
System.out.println("吃骨头");
}
public void kanJia()
{
System.out.println("看家");
}
}
class DuoTaiDemo
{
public static void main(String[] args)
{
function(new Cat());
function(new Dog());
Animal a = new Cat();//向上转型
a.eat();
Cat c = (Cat)a;//向下转型
c.catchMouse();
}
public static void function(Animal a)
{
a.eat();
//用于子类型有限
//或判断所属类型进而使用其特有方法
if(a instanceof Cat)
{
Cat c = (Cat)a;
c.catchMouse();
}
else if(a instanceof Dog)
{
Dog c = (Dog)a;//向下转型
c.kanJia();
}
}
}