java. 书上看到在继承哪一节有个叫向上转型的,书上介绍太简单,能具体说说吗?具体的代码,加上解
答案:2 悬赏:80 手机版
解决时间 2021-12-03 16:26
- 提问者网友:暮烟疏雨之际
- 2021-12-03 03:16
java. 书上看到在继承哪一节有个叫向上转型的,书上介绍太简单,能具体说说吗?具体的代码,加上解
最佳答案
- 五星知识达人网友:罪歌
- 2021-12-03 04:22
举例说明:
1、两个类:动物、狗,狗是动物的子类。
2、一般编码会这样写:动物 旺财 = new 狗();
此时:我们只能拿“旺财”当动物用,不能当狗用。这就是向上转型。
一般向上转型是默认自动转换,拿此例来说,因为:狗一定是动物,也就是子类一定是父类类型。
但向下转型就不行,因为:动物不一定是狗,此时需要强转。
根本原因是你要注意等号的左边和右边的关系:
左边是引用和引用类型,是声明类型
右边是具体的实例,也就是真实类型追问动物 旺财 = new 动物();
这样写不就行了?那为什么还会出现向上转型追答这就涉及到一个面向对象的多态问题了。
多态,一种类型多种形态,多态的优点之一:灵活。
动物 旺财 = new 动物();
一般“动物”是一个非具体的事物,程序里往往设计成接口或抽象类,也就是不能实例化。
动物 旺财 = new 狗();
一般左边用父类做声明类型,右边用子类做具体类型,此多态好处的体现就是:
我需要一个动物来完成事情,那么只要是动物的子类,你都可以给我,并不定死。
换句话来说,一般父类往往更广泛,拿来做声明类型,余地更多。
但要注意的是,需要根据具体问题而变化,比如我必须要狗才能完成的事情,而却以动物做声明类型,那么会出问题,因为你给个猫、猪都行,但一旦强转成狗就会出错。追问动物 旺财 = new狗();
狗 旺财 = new 狗();
这两个有什么区别。采纳给你了,帮我解决这个吧~追答动物 旺财 = new狗();灵活些
狗 旺财 = new 狗();具体些
其实这两个可以说没什么区别,因为多态一般是在方法传参才明显的体现出来。追问嗯,谢谢你
1、两个类:动物、狗,狗是动物的子类。
2、一般编码会这样写:动物 旺财 = new 狗();
此时:我们只能拿“旺财”当动物用,不能当狗用。这就是向上转型。
一般向上转型是默认自动转换,拿此例来说,因为:狗一定是动物,也就是子类一定是父类类型。
但向下转型就不行,因为:动物不一定是狗,此时需要强转。
根本原因是你要注意等号的左边和右边的关系:
左边是引用和引用类型,是声明类型
右边是具体的实例,也就是真实类型追问动物 旺财 = new 动物();
这样写不就行了?那为什么还会出现向上转型追答这就涉及到一个面向对象的多态问题了。
多态,一种类型多种形态,多态的优点之一:灵活。
动物 旺财 = new 动物();
一般“动物”是一个非具体的事物,程序里往往设计成接口或抽象类,也就是不能实例化。
动物 旺财 = new 狗();
一般左边用父类做声明类型,右边用子类做具体类型,此多态好处的体现就是:
我需要一个动物来完成事情,那么只要是动物的子类,你都可以给我,并不定死。
换句话来说,一般父类往往更广泛,拿来做声明类型,余地更多。
但要注意的是,需要根据具体问题而变化,比如我必须要狗才能完成的事情,而却以动物做声明类型,那么会出问题,因为你给个猫、猪都行,但一旦强转成狗就会出错。追问动物 旺财 = new狗();
狗 旺财 = new 狗();
这两个有什么区别。采纳给你了,帮我解决这个吧~追答动物 旺财 = new狗();灵活些
狗 旺财 = new 狗();具体些
其实这两个可以说没什么区别,因为多态一般是在方法传参才明显的体现出来。追问嗯,谢谢你
全部回答
- 1楼网友:神鬼未生
- 2021-12-03 04:57
父类型的引用可以指向子类实例,可以使用子类型实例的地方都可以用父类型实例替代追问举个例子好吗,代码能看懂就行,不需要很规范
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯