[Java学习]面向对象-多态

时间:2024-10-21 14:04:50

多态

多态发生条件

发生在有继承关系的类型中。

向上转型(自动类型转换)与向下转型(强制类型转换)

//向上转型
//编译阶段a1被编译器看作是Animal类型,所以a1引用绑定的是Animal类中的eat方法(静态绑定)
//运行阶段堆中的对象实际是Cat类型,a1绑定的是Cat中的eat方法(动态绑定)
Animal a1=new Cat();
a1.eat();
//向下转型
Animal a2=new Cat();
Cat c1=(Cat)a2;
c1.move();
//向下转型
//// instanceof 运算符的结果是boolean类型,如果结果true表示a指向堆中的java对象是Cat类型
Animal a3=new Dog();
if(a3 instanceof Cat){
Cat c2=(Cat)a3;
c2.move();
}

多态作用

使得代码之间的耦合度降低,增加程序可拓展性。