`
DBear
  • 浏览: 231108 次
  • 性别: 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)。

    

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

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    c++ 基本知识--类定义、初始化、析构(曹阳).ppt

    C++ 基本知识 - 类定义、初始化、析构 本文将对 C++ 中的类定义、初始化和析构进行详细的阐述。 1.1 类的定义 在 C++ 中,类是一种新的数据类型,而对象是具有这种类型的变量。类就是对同类对象的属性和行为进行...

    利用java定义Point2D及定义接口与抽象类

    同时,这三个类还实现了DiagArea接口,该接口定义了getDiagonal()和getArea()方法,分别用于获取对角线长度和面积。在主方法main中,我们创建了这三个形状类的对象,并调用了showArea()方法来显示面积,同时也调用了...

    swift-Swift初始化语法糖用更简洁的语法实现组件初始化

    初始化语法糖的一个关键特性是“属性包装器”(Property Wrappers),它允许开发者定义一个包装器类型,这个类型可以控制属性的设置和获取。通过@wrappingProperty这样的语法,我们可以将复杂的逻辑封装在属性包装器...

    java 初始化与方法

    构造方法用于初始化类的新实例,普通方法执行特定任务,静态方法与类关联而非实例,抽象方法则在接口或抽象类中定义,需由子类实现。方法的参数传递、返回值和重载也是重要的知识点,理解这些能帮助我们编写更灵活...

    virtio_blk初始化流程

    3. `virtio_blk_class_init`:执行类初始化函数,这里主要定义Virtio块设备的通用操作,并注册设备相关的实现函数。这一步骤确保了Virtio_blk设备能够处理I/O请求和其他设备交互。 4. `virtio_blk_instance_init`:...

    成员的初始化顺序和多态性

    在Java编程语言中,理解成员变量的初始化顺序对于正确地设计和实现类结构至关重要。通过本实验,我们将深入了解成员变量的初始化顺序,以及如何通过实际代码示例来验证这些概念。 #### 实验步骤解析 ##### 步骤一...

    C++ 基本知识--类定义、初始化、析构(陆璐).pptx

    C++ 是一种面向对象的编程语言,其核心概念之一就是类。类是一种用户自定义的数据类型,它允许我们将数据和操作这些...正确理解和使用类的定义、初始化、访问属性以及构造和析构函数,是编写高效、安全C++代码的关键。

    ejbCreate函数用于初始化一个EJB实例.rar

    2. **EJB的实现类**:实现了接口并包含`ejbCreate`(如果基于EJB 2.x)或`@PostConstruct`方法。 3. **部署描述符**(`ejb-jar.xml`):EJB的配置文件,用于指定EJB的元数据,如Bean的类型、接口、事务属性等。 4. *...

    动态初始化类+参数泛型化+统一返回值.zip

    例如,我们可能有一个接口,不同的实现类在不同的条件下被创建和使用,这样可以提高代码的灵活性和可扩展性。 2. **参数泛型化**: 泛型是Java 5引入的一个重要特性,它允许我们在类、接口和方法中使用类型参数,...

    在驱动模块初始化函数中实现设备节点的自动创建

    在驱动模块初始化函数中实现设备节点的自动创建可以使用 struct class 结构体和 device_create 函数,利用这些函数可以在模块加载时自动创建设备节点,并在卸载模块时删除该节点。但是,需要注意内核版本的差异和...

    thread 线程类 实现runnable接口

    Thread 类的构造函数会初始化线程的状态、线程 ID、线程属性等信息。 Thread 线程类是 Java 中 Thread 和 Runnable 接口的实现,它提供了线程的基本操作和管理。开发者可以使用 Thread 类来创建和管理线程,以实现...

    抽象类与接口的区别-java中值类型和引用类型的区别.docx

    - **抽象类与接口的主要区别**在于抽象类可以提供部分实现,而接口则完全依赖于实现者去完成所有的方法定义。此外,一个类只能继承一个抽象类,但可以实现多个接口。 - **值类型和引用类型的主要区别**在于它们的...

    5. 多个service实现同一个接口 或者抽象类 1

    这两个实现类都使用了Spring的`@Service`注解,标记为Spring管理的bean。`@Service`注解通常用于表示业务层的服务类。在这里,它们分别注入了不同类型的`OAXmlDealHandle`实现,通过`@Resource`注解来指定类型,分别...

    COM对象接口及其接口方法的实现.ppt

    实现类(如`CDictionary`)继承自一个或多个接口,并提供这些接口所定义函数的具体实现。 例如,`IDictionary`接口定义了如下方法: 1. `Initialize()`:初始化字典对象。 2. `LoadLibrary(String)`:加载字典库。 ...

    抽象类和接口

    抽象类可以使用构造方法,但是这些构造方法通常被子类所调用,以保证抽象类的初始化逻辑得以执行。 关于抽象类的具体限制如下: - 用abstract修饰符修饰的类是抽象类,用abstract修饰符修饰的成员方法是抽象方法。 ...

    安卓架构小工具app startup的使用-------让初始化代码更简单(csdn)————程序.pdf

    Initializer 是一个实现了 `Initializer&lt;T&gt;` 接口的类,`T` 是你想要初始化的组件类型。 - `create()` 方法:在这个方法中编写具体的初始化逻辑,返回一个组件的实例。 - `dependencies()` 方法:返回一个 ...

    抽象类指针引用.rar

    再者,**引用**是C++的一个特性,它是已初始化的变量的别名,一旦引用被初始化,就不能改变引用关系。与指针类似,引用也可以用来操作对象,包括抽象类的对象。使用抽象类引用时,同样遵循多态性原则,即无论引用...

    理解 C#值类型与引用类型 (2).pdf

    如果需要多线程共享或需要继承和多态,使用引用类型。 - 实现常量性和原子性:对于需要保持不变的值,使用值类型,如常量或不可变对象。 - 确保值类型的有效状态:0应被视为有效状态,避免在默认值可能导致错误的...

    明华ic卡读写器初始化源码c#

    明华IC卡读写器是一款专为处理明华品牌IC卡设计的硬件设备,它提供了C#语言的API接口,便于开发者编写应用程序来实现对卡片的读取、写入以及初始化等操作。下面我们将深入探讨这个主题,特别是关于"明华ic卡读写器...

    java利用接口和抽象类改写求圆的面积和梯形的面积.docx

    - **使用格式**:接口通过实现的方式使用,一个类可以实现多个接口,并且在实现类中需要将接口中的所有方法都实现。其具体格式如下: ```java class 类名 implements 接口列表 { // 实现所有接口中声明的方法 }...

Global site tag (gtag.js) - Google Analytics