向上转型的作用到底是什么?

向上转型的作用到底是什么?

老师,经常看到实例化对象的时候用到向上转型,这里向上转型的作用到底是什么?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,

向上转型是为了面向接口编程,多态化而设计的。

例如Set,Map是接口,而HashSet,HashMap是类。 

Set,Map接口有多个实现类,也许哪一天需要换成其它的实现类呢?这样使用该引用调用的方法就不需要改了,这样就降低了修改程序的成本和风险,提高了程序的可复用性。

假设开始用 

HashSet set= new HashSet(); 
HashMap = new HashMap();

 修改的地方就多了,特别是如果使用了HashSet,HashMap特有的方法和属性。

如果没有特别需求的话,最好使用

Set set= new HashSet();  
Map map = new HashMap();

便于程序代码的重构. 这就是面向接口编程的好处。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~



  • 天才少年25 提问者 #1
    如果以后接口的引用指向其他的实现类了,是不是需要再重新new一次呢?
    2019-06-11 17:50:28
吃吃吃鱼的猫 2019-06-11 18:57:24

同学你好,这里的set是Set的引用,指向HashSet对象。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

吃吃吃鱼的猫 2019-06-11 18:09:02

同学你好,是的。

但是这时不需要再重新定义一个引用哦~

例如:

HashMap map= new HashMap();

指向其他的实现类时,可以写为:

map=new HashTable();

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 天才少年25 #1
    老师,那Set set=new HashSet();这里的set对象,到底是接口Set的对象还是HashSet的对象呢?set是跟在Set后面,但是它指向的又是HashSet,那它到底是谁的实例化对象呢?
    2019-06-11 18:43:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师