`
DBear
  • 浏览: 228701 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类

用接口类型定义引用,用实现类初始化

阅读更多

     本人对Java的学习一直遵循“先用后学”的过程,这种学习过程的好处是记忆牢固、有的放矢;不好处就是,经常犯一些相当低级的错误。

    

     我之前在学习使用Java库中的Collection相关类的时候发现一个问题,我经常会看到如下方式的类实例定义方法:

 

     Collection<Customer> customers = new ArrayList<Customer>();----------------------------1

 

     我当时一直很费解,为什么不能直接把customers定义为ArrayList

 

     ArrayList<Customer> customers = new ArrayList<Customer>();----------------------------2

 

     而是使用它的接口类型,这样做究竟有什么好处呢?后来看了一些书,问了一些人,大概了解了一点这么定义的好处:1、隐藏实现 2、方便日后修改实现类型(如把ArrayList改为LinkedList)。

    

     进一步的好处如有了解将在以后不断更新。

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    【05-面向对象(下)】

    •当使用接口来声明引用类型的变量时,这个引用类型的变量必须引用到其实现类的对象。 •一个类可以实现一个或多个接口,继承使用extends关键字,实现接口则使用implements关键字。 实现接口 •一个类...

    JAVA资格认证:SCJP310-055中文

    声明、初始化并使用基本类型、数组、枚举、静态对象、成员变量和局部变量,使用合法的变量标识符。  定义方法和静态方法,使用符合JavaBean命名规范的方法名。  定义并使用可变参数。正确重写和重载方法并识别...

    提高C#编程水平的50个要点

    实现类的 Dispose 方法  19.在接口和继承(Inheritance)之间,优先使用接口(interface) 20.区分接口和重载(overrides)  21.用委托(delegate)来实现回调(callback)  22.用事件(event)来定义外部接口  23.避免返回...

    疯狂JAVA讲义

    4.6.3 引用类型数组的初始化 96 4.6.4 没有多维数组 99 学生提问:我是否可以让图4.13中灰色覆盖的数组元素再次指向另一个数组?这样不可以扩展成三维数组吗?甚至扩展到更多维的数组? 101 4.6.5 操作数组的工具...

    JAVA实验报告二Java面向对象程序设计.docx

    类Circle、Square、Triangle均实现了接口Shape。定义主函数,创建元素个数为3的Shape类型的一维数组,分别为数组元素创建Circle、Square和Triangle类型的对象,最后分别调用各数组元素的Area方法,输出相关信息。 (3...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    · 理解基元类型、值类型和引用类型的行为,从而最高效地定义和使用它们 · 使用泛型和接口来定义可重用的算法 · 高效使用特定的CLR类型——委托、枚举、定制attribute、数组和字符串 · 理解垃圾回收器是如何管理...

    Visual C++ 2005入门经典.part08.rar (整理并添加所有书签)

    17.2.5 如何实现类的串行化 17.3 应用串行化 17.3.1 记录文档修改 17.3.2 串行化文档 17.3.3 串行化元素类 17.4 练习串行化 17.5 移动文本 17.6 打印文档 17.7 实现多页打印 17.7.1 获取文档的总尺寸 17.7.2 存储...

    Visual C++ 2005入门经典.part04.rar (整理并添加所有书签)

    17.2.5 如何实现类的串行化 17.3 应用串行化 17.3.1 记录文档修改 17.3.2 串行化文档 17.3.3 串行化元素类 17.4 练习串行化 17.5 移动文本 17.6 打印文档 17.7 实现多页打印 17.7.1 获取文档的总尺寸 17.7.2 存储...

    Visual C++ 2005入门经典.part07.rar (整理并添加所有书签)

    17.2.5 如何实现类的串行化 17.3 应用串行化 17.3.1 记录文档修改 17.3.2 串行化文档 17.3.3 串行化元素类 17.4 练习串行化 17.5 移动文本 17.6 打印文档 17.7 实现多页打印 17.7.1 获取文档的总尺寸 17.7.2 存储...

    Visual C++ 2005入门经典.part09.rar (整理并添加所有书签)

    17.2.5 如何实现类的串行化 17.3 应用串行化 17.3.1 记录文档修改 17.3.2 串行化文档 17.3.3 串行化元素类 17.4 练习串行化 17.5 移动文本 17.6 打印文档 17.7 实现多页打印 17.7.1 获取文档的总尺寸 17.7.2 存储...

    Visual C++ 2005入门经典.part06.rar (整理并添加所有书签)

    17.2.5 如何实现类的串行化 17.3 应用串行化 17.3.1 记录文档修改 17.3.2 串行化文档 17.3.3 串行化元素类 17.4 练习串行化 17.5 移动文本 17.6 打印文档 17.7 实现多页打印 17.7.1 获取文档的总尺寸 17.7.2 存储...

    Visual C++ 2005入门经典.part05.rar (整理并添加所有书签)

    17.2.5 如何实现类的串行化 17.3 应用串行化 17.3.1 记录文档修改 17.3.2 串行化文档 17.3.3 串行化元素类 17.4 练习串行化 17.5 移动文本 17.6 打印文档 17.7 实现多页打印 17.7.1 获取文档的总尺寸 17.7.2 存储...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    11.11 类型定义符typedef 12 位运算 12.1 位运算符C语言提供了六种位运算符: 189 12.1.1 按位与运算 191 12.1.2 按位或运算 192 12.1.3 按位异或运算 192 12.1.4 求反运算 193 12.1.5 左移运算 193 1012.1.6 右移...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    11.11 类型定义符typedef 12 位运算 12.1 位运算符C语言提供了六种位运算符: 189 12.1.1 按位与运算 191 12.1.2 按位或运算 192 12.1.3 按位异或运算 192 12.1.4 求反运算 193 12.1.5 左移运算 193 1012.1.6 右移...

    javaSE代码实例

    15.4.3 匿名内部类的初始化 337 15.4.4 匿名内部类作用的体现 337 15.5 理解内部类 339 15.6 内部接口 340 15.6.1 定义在类中的内部接口 340 15.6.2 定义在接口中的内部接口 341 15.7 小结 342 第16...

    JAVA基础知识精华总结 收藏

    在创建对象时,对象所在类的所有数据成员会首先进行初始化。 基本类型:int型,初始化为0。 如果为对象:这些对象会按顺序初始化。 ※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。 构造方法的...

    C#本质论(第3版)

    7.4 “实现类”与其接口之间的转型 7.5 接口继承 7.6 多接口继承 7.7 接口上的扩展方法 7.8 通过接口来实现多重继承 7.9 版本控制 7.10 接口与类的比较 7.11 小结 第8章 值类型 8.1 结构 8.1.1 struct的...

    C#5.0本质论第四版(因文件较大传的是百度网盘地址)

    7.4 在实现类和接口之间转换 222 7.5 接口继承 222 7.6 多接口继承 224 7.7 接口上的扩展方法 225 7.8 通过接口实现多继承 226 7.9 版本控制 228 7.10 接口与类的比较 229 7.11 接口与特性的...

Global site tag (gtag.js) - Google Analytics