首先 ,你要明白一点: List list是定义接口变量 而 new ArrayList()才是构建对象
List可以是接口也可以是类,他都是数据类型 只要他是父类(可以是他本身)或父接口
我认为List是类或是接口的区别在于:
List为类时: 更换类名时,意味着原有的代码也要修改: List可能被修改
List为接口时: 接口只是个定义,不管你怎样去实现只要定义不发生改变.原来的代码就不用修改: List可以不修改. 如果在添加动态实例对象(使用反射),此时的接口就像分割线一样;就算实现部分发生了改变也不会影响到原来的代码更不需要去修改: 面向修改封闭,面向扩展开放.
|