您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
java里为什么用接口引用实现类的对象?
接口,对象,子类java里为什么用接口引用实现类的对象?
发布时间:2016-12-08加入收藏来源:互联网点击:
这里简单说一下多态的定义:指允许不同类的对象对同一动作做出不同的响应。
List list;是在栈区开辟一个空间放list引用,并没有创建对象所以不知道ArrayList还是LinkedList当你list= new ArrayList(); 就创建了ArrayList对象。并且把开始创建的list引用指向这个对象ArrayList。
这里有一个问题了,为什么一般都使用 List list = new ArrayList() ,而不用 ArrayList alist = new ArrayList()呢?
回答于 2019-09-11 08:43:50
以List list = new ArrayList为例,这里前者是接口,后者是实现了该接口的对象,这里接口引用指向子类对象的方式是java中多态的体现,
这里简单说一下多态的定义:指允许不同类的对象对同一动作做出不同的响应。
List list;是在栈区开辟一个空间放list引用,并没有创建对象所以不知道ArrayList还是LinkedList当你list= new ArrayList(); 就创建了ArrayList对象。并且把开始创建的list引用指向这个对象ArrayList。
这里有一个问题了,为什么一般都使用 List list = new ArrayList() ,而不用 ArrayList alist = new ArrayList()呢?
问题就在于List有多个实现类,如 LinkedList或者Vector等等,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类呢?这时你只要改变这一行就行了:List list = new LinkedList(); 其它使用了list地方的代码根本不需要改动。假设你开始用 ArrayList alist = new ArrayList(), 这下你有的改了,特别是如果你使用了 ArrayList特有的方法和属性。 如果没有特别需求的话,最好使用List list = new LinkedList();以便于程序代码的重构. 这就是面向接口编程的好处
需要注意的是list只能使用ArrayList中已经实现了的List接口中的方法,ArrayList中那些自己的、没有在List接口定义的方法是不可以被访问到,list.add()其实是List接口的方法,但是调用ArrayList的方法如 clone()方法是调用不到的
希望能够帮到你,谢谢。
上一篇:小超市摆货没人进是不是失败了?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |