猿问

子类继承父类的全部成员,子类也可以另写独有方法,那子类的范围不应该大于父类吗?

在JAVA入门第二季4-2

“多态中的引用类型转化”课程中,

老师将父类Animal转换为子类Dog称为向下类型转换,子类转换为父类称为向上类型转换

并用比喻“父类像水壶,子类像水杯,

父类转换为子类就类似于将水壶里的水倒入水杯中,可能装不下,是有风险的,称为向下类型转换;

子类转换为父类就类似于将水杯里的水倒入水壶中,是没有风险的,称为向上类型转换。”


联想到学习变量时的强制类型转换:

double->int时是有风险的,需要做强制类型转换,

会丢弃部分数据,因为double的范围大于int(这句话不太严谨,但我大概是这样理解的)


回归正题,

子类继承父类的全部成员,包括变量、方法,子类还可以另写父类没有的方法;

也就是说,父类有的子类都有,父类没有的子类也可以另写?


那为什么还将父类比喻成大水壶,子类比喻成小水杯呢?

子类的范围不是大于父类的吗?(父类有的全都有,父类没有的也能另写)


那为何,大范围Dog->小范围Animal无须多虑?

为何小Animal->大Dog时会有风险,必须强制转换?Animal小于Dog,小->大(int->double)会有风险?


是老师的比喻不恰当,还是我的理解哪里出了问题,

子类继承父类的所有成员,应当理解成子类double,父类int吗?

困惑,感谢解答

咖喱炒饭
浏览 2424回答 3
3回答

郝然

其实是你对对象的理解问题,这的说不知道你能不能明白,就用你举的例子,动物的范围大于狗,也就是父类范围大于子类。 而你说的父类有的子类都有还可以有特有的,这和你上面说的范围不是一个意义的词,比如狗有你定义的动物的全部特征和方法,还有自己专属于狗的特征和方法,,这并不是单纯的范围而是对象的特性与共性,小范围的特征肯定是多余大范围的共同特征的 double和int是基本类型不是对象,不存在子父类继承关系 而Double和Integer也就是它们的包装类同是Number的子类,是两个有共性的个体不存在继承关系 纯手打,如果能明白请采纳

慕的地8582982

TIKAQSIZBEUGWKAEPYHQAJYAWLOFBKMDZJEUENKGCLHRDSIFPYVRAVFKAVGXUQADSIYHWZIRIGPLQROKTPSVLNRBTDZPRUXNWZWRTVGVTCSOLHVQAQGWSGDFPRBXTQNCFVEVGOEBEURNWZOGDFPZPMUXHRYNPMPRNENDGVRHQNQFWSCTSODAJGVTORBQROEURNXZJNFVXIRNELHXUQZTCFCSOEHLNXGWFDZIYBYJLIEUWLOLPSVKTCZPYVLPNDZBYVEHRTXURAXTRFOQNQMHQZWEOWAQMEWLUKHKHDZVMKTDNKAQACAWKFIZPLIKGIZGILPYCFGWTKKZCSPAOKTDGMPEHLOSORNRDSBFJZIYUXNLACFJSPYUKOGVXUKMORAXGYVEMCYBKTQMZQFIZCMOEUEXHPFJMQSVEHZPRIQZBKAQTDXTVFIDHKGXCRTDLGPLOQAWSIRBKSIYURTPLNBSOETPLYUJTCYGWROKDSBLUXGWLUKMOLBEYVSHRURNQGWGJSNQMWXULHWGJMIZABKTJSCEGQZDFISOKHJMUXTPRHKNBDFILRAQMWMOEAKGKMOYBEISNDAIEFHKAPSHQBOQSOXTKGAJMFUCGIZCSHQAXZPYOYUVXBFHWMIEBEHWMCXGCLIESIEPLKMOEOKHDMVYSACMITCQGIYODFWSHQZVYOUVRHDTVFUXTSHWAPLOCROXHWZORHQZISPHJSOLNWNBRASAQGCTIRHRVLGPRVYTWFIEXAQNDGJMWMVGPYHEOISHJGAPKAQMIYUKGAJLWLOPYNXULUDNJACMIRADUORAJMBKTQFOEGQFBPYIMAVRCEIXMPSHQNPYVEMCEHQBDADTJLHWMPCEHQSBRTPYOENPSIZVZIRZ
随时随地看视频慕课网APP

相关分类

Java
我要回答