日期:2014-05-20  浏览次数:20733 次

关于向上转型的疑问?
List<Integer> intList = new ArrayList<Integer>();
ArrayList<Integer> intList = new ArrayList<Integer>();

第一种表达相对第二种表达有什么优势?

------解决方案--------------------
第一种是对接口编程
第二种是对类编程
对接口编程比对类编程耦合度更低一些
比如现在用的是ArrayList,如果哪天业务需要用LinkedList了,第二种方式的就要修改声明
优点在工程很小的时候根本体现不出来
在较大项目,多模块合作,且需要经常扩展,修改的时候就能体现出其优势了
一般会使用工厂+xml配置的方式,动态生成对象
修改一下xml配置,就可以更换所用的类,而不需要修改代码,编译,再发布,这样复杂的动作
------解决方案--------------------
一楼答案很详细了
补充如果你实现的两个类有一个共同的父类 这个父类中的一个方法在子类中都重写了
这时候你可以把子类的对象实例赋值给父类的声明的变量 这时候会自动调用子类中重写的父类的函数