关于网友提出的“ 让子类实例直接等于父类实例可以不可以?”问题疑问,本网通过在网上对“ 让子类实例直接等于父类实例可以不可以?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 让子类实例直接等于父类实例可以不可以?描述:
A是父类实例,B是子类实例
B=A和A=B各需要注意什么?
解决方案1:
A是父类实例,B是子类实例,B=A和A=B各需要注意什么?
对于这个问题,分析如下:很明显A和B有继承关系,要不就不可以使用子类和父类来形象两个类,我们可以把A看成动物,把B看成狗,狗是动物的一种,所以把A=B是合理的,父类的引用指向子类的对象,也是多态的表现之一,如果是B=A的话,就可能会存在问题,因为动物不一定都是狗,也可能是是猫,所以可能会有安全问题,在使用这个表达式的时候,可以先进行判断类型是否一致在使用,使用instanceof关键字判断。(以上讨论默任A和B具有可替换型)
1楼为正解,A=B将子类对象的引用赋给父类的对象,父类A可以调用子类B中继承自父类A的public方法,也就是上转型对象
但是在B=A就要进行强制类型转换,而且容易出现问题,比如在子类B中调用自己定义的方法,但是在父类的对象中是没有的,这就会出现错误。 解决方案3:
A=B是可以的,多态的体现,很常用,
B=A应该要强制类型转换,不建议使用,除非能确定B的type和A的type是一模一样的