黑马程序员技术交流社区

标题: 面象接口编程问题 [打印本页]

作者: 冯鹏飞    时间: 2011-7-21 08:57
标题: 面象接口编程问题
遇到过很多面象接口编程实例代码,变量的类型尽量使用面向父级,就如List  l=new  ArrayList()这种方式,我现在困惑的是到底是其优点在哪?具体怎么应用的?如果能有实例最好。
作者: 匿名    时间: 2011-7-21 10:29
马友来了
马友,海涵来帮你解答这个问题,希望对你有帮助
List l=new ArrayList()这种方式是父类的引用指向子类,是多态性
比ArrayList l=new ArrayList() 更具有灵活性
因为父类的外延更大。
作者: 匿名    时间: 2011-7-21 10:31
标题: 回复 楼主 的帖子
还有 张老师 说过

List l=new ArrayList()这么写
比ArrayList l=new ArrayList() 这么写  
显得你更专业,面试你的人 会觉得你这个人 更高。
作者: 匿名    时间: 2011-7-21 10:49
将变量声明为父类是为了让代码有更好的可扩展性,因为一个项目未来可能会应对不同客户的需求进行不同的修改,这时候便需要继承这个类或是方法或是实现接口,如果这是你需要继承这个类,那么有可能还需要更改父类的代码,会增加更大的工作量,而且也降低了代码的安全性。
作者: 董俊霞    时间: 2011-7-21 10:51
List  l=new  ArrayList()  比 Arraylist l=new ArrayList()灵活,
下面是一个示例代码:
import java.util.ArrayList;
import java.util.List;
public class TestCollection {
public static void main(String[] args) {
System.out.println("开始:");
String a = "A", b = "B", c = "C", d = "D", e = "E";
List<String> list = new ArrayList<String>();
list.add(a); // 索引位置为 0
list.add(b); // 索引位置为 1
list.add(c); // 索引位置为 2
list.add(d); // 索引位置为 3
list.add(e); // 索引位置为 4
list = list.subList(1, 3);// 利用从索引位置 1 到 3 的对象重新生成一个List集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("结束!");
}
}
输出如下信息:
B
C

主要体现了接口的使用使得方法的描述说明和方法功能的实现分开考虑,这有助于降低程序的复杂性,使程序设计灵活,便于扩充修改。这体现了java的多态性。
[ 本帖最后由 董俊霞 于 2011-07-21  11:15 编辑 ]
作者: 匿名    时间: 2011-7-21 15:01
多态
接口实例化和对象实例化的区别
如果你要使用反射机制最好是用list   l   =   new   arraylist()这种形式
如果不用反射,那都是一样的
不过在实际的工程应用中最好使用list   l   =   new   arraylist()这种形式
比如你想定义dog和cat两个类,最好是先设计出一个animal接口然后用通过dog和cat实现,使用的时候也类似
list   l   =   new   arraylist(),这样会比直接dog   d   =new   dog()好的多……




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2