看了几天Java基础知识,其中关于一个接口类型的变量定义:如:
Set set = new HashSet();
或者
List list = new ArrayList();我始终不能完全理解为什么要这样来定义,为什么不直接:
HashSet set = new HashSet();
或者
ArrayList list = new ArrayList();他们个根本区别是什么,另外Set set = new HashSet();的真正用意和用途是什么???
Set set = new HashSet();
或者
List list = new ArrayList();我始终不能完全理解为什么要这样来定义,为什么不直接:
HashSet set = new HashSet();
或者
ArrayList list = new ArrayList();他们个根本区别是什么,另外Set set = new HashSet();的真正用意和用途是什么???
解决方案 »
- 菜鸟求解面向对象中封装为什么会运行出这个结果。
- 关于java中参数使用(String... name1)中的参数有什么特别的用处吗?
- jPasswordField1.getPassword()的问题
- 为什么会报missing value from resource file SEC_007 - check classpath的错误
- 高手HELPME ~~怎么控制JTextField中输入字符串长度?
- 刚学java小应用程序,显示问题,老鸟们都进来指定一下呀!!!小弟万分感谢
- 关于JAVA的命运问题----讨论
- 如何使用poi在已存在的excel中插入一行???
- NIO Selector读写
- 字符串问题!
- java如何获取地理信息?
- J2SE常用英文
List list = new ArrayList();
后面对list的使用不用去关注list内部到底是使用何种具体类型实现的,这样,当你需要修改list的具体类型时,比较容易修改,影响的代码很少。
比如,你希望list采用LinkedList来实现,只需要修改一句话
List list = new LinkedList();
后面使用list的代码不受影响。
lz,接口中是不存在“变量”的
接口中所有属性默认都是public static final
所以,接口中都是常量和方法
其实用类似List list = new ArrayList();这种,主要是为了list这个接口能处于各种实现之上例子:吃的food拥有很多方法,比如饱()
然后有这么几个实现:吃大饱,吃中饱,吃小饱
你的需求是:你要吃大饱,你妈妈吃小饱
那你的确可以直接: 大饱 引用=new 大饱
你妈妈直接: 小饱 引用=new 小饱
但是有一天,你要吃大饱加好吃,你妈妈也要吃小饱+好吃,怎么办?去创建2个新的实现类?
所以,这个时候只要在接口中定义好吃(),然后使用food 引用=new *饱,你就可以满足需求拉,你妈妈也是一样也就是说为了抽象出会共同用到的一些方法,所以才用接口,方便实现类去使用和修改
感觉我也没有说得很清楚,今天忙死了