让子类实例直接等于父类实例可以不可以?

来源:互联网  时间:2016/7/19 7:36:27

关于网友提出的“ 让子类实例直接等于父类实例可以不可以?”问题疑问,本网通过在网上对“ 让子类实例直接等于父类实例可以不可以?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 让子类实例直接等于父类实例可以不可以?
描述:

A是父类实例,B是子类实例
B=A和A=B各需要注意什么?


解决方案1:

A是父类实例,B是子类实例,B=A和A=B各需要注意什么?
对于这个问题,分析如下:很明显A和B有继承关系,要不就不可以使用子类和父类来形象两个类,我们可以把A看成动物,把B看成狗,狗是动物的一种,所以把A=B是合理的,父类的引用指向子类的对象,也是多态的表现之一,如果是B=A的话,就可能会存在问题,因为动物不一定都是狗,也可能是是猫,所以可能会有安全问题,在使用这个表达式的时候,可以先进行判断类型是否一致在使用,使用instanceof关键字判断。(以上讨论默任A和B具有可替换型)

解决方案2:

引用 1 楼 fclxyz 的回复:
A=B是可以的,多态的体现,很常用,
B=A应该要强制类型转换,不建议使用,除非能确定B的type和A的type是一模一样的

1楼为正解,A=B将子类对象的引用赋给父类的对象,父类A可以调用子类B中继承自父类A的public方法,也就是上转型对象
但是在B=A就要进行强制类型转换,而且容易出现问题,比如在子类B中调用自己定义的方法,但是在父类的对象中是没有的,这就会出现错误。 解决方案3:

A=B是可以的,多态的体现,很常用,
B=A应该要强制类型转换,不建议使用,除非能确定B的type和A的type是一模一样的

上一篇spring配置了事务管理器,在dao层使用 @transactional 不起作用
下一篇IDEA maven依赖出错,无法自动提示了
明星图片
相关文章
《 让子类实例直接等于父类实例可以不可以?》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)