在JAVA入门第二季4-2
“多态中的引用类型转化”课程中,
老师将父类Animal转换为子类Dog称为向下类型转换,子类转换为父类称为向上类型转换
并用比喻“父类像水壶,子类像水杯,
父类转换为子类就类似于将水壶里的水倒入水杯中,可能装不下,是有风险的,称为向下类型转换;
子类转换为父类就类似于将水杯里的水倒入水壶中,是没有风险的,称为向上类型转换。”
联想到学习变量时的强制类型转换:
double->int时是有风险的,需要做强制类型转换,
会丢弃部分数据,因为double的范围大于int(这句话不太严谨,但我大概是这样理解的)
回归正题,
子类继承父类的全部成员,包括变量、方法,子类还可以另写父类没有的方法;
也就是说,父类有的子类都有,父类没有的子类也可以另写?
那为什么还将父类比喻成大水壶,子类比喻成小水杯呢?
子类的范围不是大于父类的吗?(父类有的全都有,父类没有的也能另写)
那为何,大范围Dog->小范围Animal无须多虑?
为何小Animal->大Dog时会有风险,必须强制转换?Animal小于Dog,小->大(int->double)会有风险?
是老师的比喻不恰当,还是我的理解哪里出了问题,
子类继承父类的所有成员,应当理解成子类double,父类int吗?
困惑,感谢解答
郝然
慕的地8582982
相关分类