在JAVA入门第二季4-2“多态中的引用类型转化”课程中,老师将父类Animal转换为子类Dog称为向下类型转换,子类转换为父类称为向上类型转换并用比喻“父类像水壶,子类像水杯,父类转换为子类就类似于将水壶里的水倒入水杯中,可能装不下,是有风险的,称为向下类型转换;子类转换为父类就类似于将水杯里的水倒入水壶中,是没有风险的,称为向上类型转换。”联想到学习变量时的强制类型转换:double->int时是有风险的,需要做强制类型转换,会丢弃部分数据,因为double的范围大于int(这句话不太严谨,但我大概是这样理解的)回归正题,子类继承父类的全部成员,包括变量、方法,子类还可以另写父类没有的方法;也就是说,父类有的子类都有,父类没有的子类也可以另写?那为什么还将父类比喻成大水壶,子类比喻成小水杯呢?子类的范围不是大于父类的吗?(父类有的全都有,父类没有的也能另写)那为何,大范围Dog->小范围Animal无须多虑?为何小Animal->大Dog时会有风险,必须强制转换?Animal小于Dog,小->大(int->double)会有风险?是老师的比喻不恰当,还是我的理解哪里出了问题,子类继承父类的所有成员,应当理解成子类double,父类int吗?困惑,感谢解答
3 回答
已采纳
郝然
TA贡献12条经验 获得超10个赞
其实是你对对象的理解问题,这的说不知道你能不能明白,就用你举的例子,动物的范围大于狗,也就是父类范围大于子类。
而你说的父类有的子类都有还可以有特有的,这和你上面说的范围不是一个意义的词,比如狗有你定义的动物的全部特征和方法,还有自己专属于狗的特征和方法,,这并不是单纯的范围而是对象的特性与共性,小范围的特征肯定是多余大范围的共同特征的
double和int是基本类型不是对象,不存在子父类继承关系
而Double和Integer也就是它们的包装类同是Number的子类,是两个有共性的个体不存在继承关系
纯手打,如果能明白请采纳
添加回答
举报
0/150
提交
取消