码迷,mamicode.com
首页 > 其他好文 > 详细

接口和多态

时间:2017-08-13 00:11:56      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:使用   面向接口编程   创建   对象   alt   lin   span   注意   一个   

技术分享

子类  继承 父类

实现类  接口 (多态)


为什么要用接口引用指向实现类的对象

List list;是在栈区开辟一个空间放list引用,并没有创建对象所以不知道ArrayList还是LinkedList当你list= new ArrayList(); 就创建了ArrayList对象。并且把开始创建的list引用指向这个对象ArrayList和LinkedList都是List的实现类。

为什么一般都使用 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(); ,便于程序代码的重构. 这就是面向接口编程的好处(OOP/AOP)

注意事项

list只能使用ArrayList中已经实现了的List接口中的方法,ArrayList中那些自己的、没有在List接口定义的方法是不可以被访问到的

list.add()其实是List接口的方法

但是调用ArrayList的方法如 clone()方法是调用不到的

接口和多态

标签:使用   面向接口编程   创建   对象   alt   lin   span   注意   一个   

原文地址:http://www.cnblogs.com/cs-lcy/p/7351828.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!