多态的缺点和解决方法
程序员文章站
2022-06-10 10:58:29
...
多态的缺点以及解决办法
*
-
缺点: 通过多态的父类引用无法访问子类所特有的方法
-
向上转型(自动转换)
格式:<父类型> <引用变量名> = new <子类型>();
特点:
子类转为父类 父类的引用指向子类对象。自动进行类型转换
此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法
此时通过父类引用变量无法调用子类特有的属性和方法
向下转型(强制转换)
格式:<子类型> <引用变量名> = (<子类型> )<父类型的引用变量>;
特点:
父类转为子类,父类引用转为子类对象。理解为强制类型转换
在向下转型的过程中,如果没有转换为真实子类类型,会出现类型转换异常
异常名称: 类型转换异常
产生原因: 在向下转型的过程中没有转换成真实的类型
解决办法: 对父类的所有子类做逐一类型判断 -
-
格式: 左边对象 instanceof 右边类
Fu f=new Zi();
if(f instanceof Fu)
{
******
}
-
作用: 判断左边对象是否属于右边类的实例,
-
目前我们知道使用向下转型 + instanceof关键字能够解决多态的缺点
-
但是我们清楚 如果需要对父类的所有子类做逐一判断,可能存在安全隐患或者违反开闭原则
-
但是还有一个Object类,该类有无数个子类,所以如果父类引用是Object,那么安全隐患永远存在
-
后期使用泛型改进
推荐阅读