问题


刚看到Linkedlist,想到这个问题,
List<String> link = new LinkedList<>();
LinkedList<String> link2=new LinkedList<>();这两种写法比起来,明显link2的方法更多,那多态有啥应用场景嘛,

一个父类Animal, 一个子类cat,子类继承了父类,并重写了里面的方法,
Animal a = new Cat()
,这个a只能用Animal里面的方法,想要用cat里面的方法的话还需要向下转型,多态的方式不是方法就变少了吗,直接
Cat a = new Cat()
方法不是多嘛

解决

请教了一下大佬,他是这么回我的
通常使用

List list = new ArrayList();

而不是使用

ArrayList list = new ArrayList();

我们知道List有多个实现类,除了ArrayList,还有LinkedList,Vector等等,如果后续需要更换实现,那么改动明显小很多,通常来说,List提供的接口已经够用了,这也是面向接口编程的典型应用,

到时候要是需要的话就直接向下转型到某个子类

还看到一个别样的解释,蛮有意思

在工作当中尽量面向抽象编程,不要面向具体编程。在上面实例中drive方法的参数Car相比于Benz和BMW更加抽象一些,就好比生活中,别人会问你会开车么,通常不会问你会开宝马车么?会开奔驰车么?由此可见形参写上Car,程序的扩展性更强了,只要是汽车都能传过来开动。

分类: java

站点统计

  • 文章总数:315 篇
  • 分类总数:20 个
  • 标签总数:193 个
  • 运行天数:1161 天
  • 访问总数:47709 人次

浙公网安备33011302000604

辽ICP备20003309号