欲构造 ArrayList 类的一个实例,此类实现了 List 接口,
List myList=new ArrayList()
属于面向接口编程,是 java 语言的一大优点。ArrayList 虽然是一个具体的类,按照 ArrayList myList=new ArrayList (); 的确也可以生成一个 myList 对象,而且编译也不会报错。但是在实际开发中是不采用这样的方式,即实际开发时都是 接口名 xxx=new 接口某实现类()。这样便于
1、便于程序规范化设计
2、便与团队协同开发
3、便于转换为组件
4、方便的代码复用,无需了解技术细节。
接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界 “如果你是…… 则必须能……” 的理念。
当下层需要改变时,只要接口及接口功能不变,则上层不用做任何修改。甚至可以在不改动上层代码时将下层整个替换掉,就像我们将一个 WD 的 60G 硬盘换成一个希捷的 160G 的硬盘,计算机其他地方不用做任何改动,而是把原硬盘拔下来、新硬盘插上就行了,因为计算机其他部分不依赖具体硬盘,而只依赖一个 IDE 接口,只要硬盘实现了这个接口,就可以替换上去。
所以,别的模块依赖的是抽象的接口,而不是接口的实现,在开发的时候,完全可以把接口先抽象出来在并行开发,接口的好处不是针对实现接口的类而是对依赖接口功能的其他模块
补充1:
在接口里面的变量默认都是 public static final 的,它们是公共的 , 静态的 , 最终的常量。相当于全局常量,可以直接省略修饰符。