为什么使用
多
态
使用方法重载构建方法存在频繁修改代码,代码可扩展性,可维护性差,这事可以使用多态优化设计。
同一种事物,由于条件不同,产生的结果也不同 例如:打印机
多态:同一个引用类型,使用不同的实例而执行不同操作(父类引用,子类对象)
如何实现多态?
1.使用继承
2.子类重写父类的方法
3.父类引用子
多态的优点:
1.可替换性。多态对已存在的代码具有可替换性。
2.可扩充性。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。
3.接口性。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
4.灵活性。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性。多态简化了对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。值得注意的是,多态并不能够解决提高执行速度的问题,因为它基于动态装载和地址引用,或动态绑定。
引用类型转换
向上转型
父类引用子类
可见性:子类重写父类的方法
应用:
多态
向下转型
强制类型转换,父类转换子类
应用:类型的还原
instanceof
判断一个对象是否属于一个类或者实现了一个接口
强制类型转换之前通过i
nstanceof
运算符检查对象的真实类型,可以避免类型转换的异常,从而提高了代码的健壮性
//在强转前先判断类型
if(f instanceof C2){
//可能出现类型转换错误
((C2)f).t2();
}else{
System.out.println("该类型不是c2类型");
}