`
jaesonchen
  • 浏览: 311320 次
  • 来自: ...
社区版块
存档分类
最新评论

接口和类

 
阅读更多

接口中的方法自动是public abstract 的.

 

* 接口优先于抽象类:
   java提供了两种机制可以用来定义允许多个实现的类型:接口和抽象类。
   最明显的区别在于,抽象类允许包含某些方法的实现,接口则不允许。
   更重要的区别在于,为了实现抽象类定义的类型,类必须成为抽象类的子类。
   因为java只允许单继承,所以抽象类受到了极大的限制。
   因为java允许实现多个接口,现有的类很容易被更新以实现新的接口。
   接口是定义混合类型的理想选择,接口允许我们构造非层次结构的类型框架。
   通过包装类(Decorator模式),接口使得安全地增强现有类的功能成为可能。
   通过对导出的每个重要接口提供一个抽象的骨架实现类,把接口和抽象类的优点结合起来。骨架实现

   被称为AbstractInterface。

   Collections Framework为每个重要的集合接口都提供了一个骨架实现,包括AbstractCollection、

   AbstractSet、AbstractList、AbstractMap。

***************************************************************
 * 接口只用于定义类型:
   当类实现接口时,接口就充当可以引用这个类的实例的类型。
   常量接口模式是对接口的不良使用,这种接口没有包含任何方法,只包含静态的final域,每个final域都

   导出一个常量。
   要导出常量,可以有两种合理的选择方案:
   (1)如果这些常量与某个现有类或者接口紧密相关,应该把这些常量添加到这个类或者接口中。
   (2)如果这些常量最好被看作枚举类型的成员,就应该使用枚举类型来导出这些常量。

***************************************************************
 * 类层次优先于标签类:

   标签类是指使用类成员变量来表示对象的类别,通常应该考虑子类型化(subtyping)。


   当想要编写一个包含显式标签field的类时,应当考虑一下,这个标签是否可以被取消,这个类是否可以

   用类层次来代替。
   当遇到一个包含标签field的现有类时,就要考虑将他重构到一个类层次结构中去。

***************************************************************
 * 用函数对象表示策略:
   如果一个类仅仅导出一个方法,该方法执行其他对象上的操作(这些对象被显式传递给方法),它的

   实例实际上等同于指向该方法的指针,这样的实例被称为函数对象。
   具体的策略类往往使用匿名类声明,但是以这种方式使用匿名类,将会在每次执行调用的时候都创建

   一个新的实例。
   函数对象的主要用途就是实现策略模式(strategy)。
   当一个具体策略设计用来重复使用的时候,它的类通常就要被实现为私有的静态成员类,并通过

   public static final field被导出,其类型为策略接口。
 

***************************************************************
 * 优先考虑静态成员类:
   嵌套类(nested class)是指被定义在另一个类内部的类。嵌套类存在的目的应该只是为它的外围类

  (enclosing class)提供服务。
   嵌套类有四种:静态成员类、非静态成员类、匿名类、局部类(local)。除了静态成员类,其他三种被

   称为内部类(inner class)。

 * 静态成员类:最好把它看作一个普通的类,只是碰巧声明在另一个类内部,它可以访问外围类的所有

   成员,包括声明为私有的成员。
   静态成员类和外围类的其他静态成员一样,也遵守同样的访问规则,如果被声明为private的,它就只能

   在外围类的内部才可以被访问。
   如果声明的成员类不要求访问外围实例,应该使用static使它成为静态成员类以提高性能和节省空间。

 * 非静态成员类:它的每个实例都隐含着与外围类的实例相关联。在非静态成员类实例的方法内部,

   可以调用外围实例上的方法,或者利用修饰过的this构造或者外围实例的引用。
   在没有外围类实例的情况下,想要创建非静态成员类的实例是不可能的。当非静态成员类的实例被

   创建的时候,它与外围实例的关联关系也随之建立起来,
   这种关联关系以后不能被修改,每个实例都将包含一个额外的指向外围对象的引用。使用 Outer.this.field

   访问外围类的成员。

 * 匿名类:匿名类没有名字,它不是外围类的一个成员,并不与其他成员一起被声明,而是在使用的同时

   被声明和实例化。它可以出现在代码中任何允许存在表达式的地方。
   无法声明一个匿名类来实现多个接口,或者同时扩展类和实现接口。
   匿名类的常见用法是动态地创建函数对象。另一种用法是创建过程对象(Runnable、Thread)。

 * 普通(非内部)类不可设为private 或protected——只允许public 或者“友好的”。

分享到:
评论

相关推荐

    net 接口实现,接口定义,接口和类,接口,类

    在这个例子中,`Eat()`和`Speak()`是接口的成员,没有具体实现,它们需要在实现该接口的类中提供实现。 ### 接口实现 类可以通过`implements`关键字来实现一个或多个接口,并提供接口中所有成员的具体实现。例如,...

    java的小程序关于接口和类的使用

    在Java编程语言中,类和接口是面向对象编程的基础元素,它们构成了程序设计的核心结构。本文将详细探讨这两个概念,以及如何在Java小程序中有效利用它们。 首先,我们来看类。类是Java中的蓝图,它定义了具有相同...

    解析在C#中接口和类的异同

    接口、类和结构都可以从多个接口继承。 接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。 接口和类都可以包含事件、索引器、属性。 接口只能定义方法。 1. 类 类的分类有:抽象类(abstract)...

    超全面javaweb教程28天第9天 4 Servlet之接口和类的介绍,以及实现Servlet接口

    超全面javaweb教程28天第9天_4_Servlet之接口和类的介绍,以及实现Servlet接口

    Excel接口导入类头文件

    在实际开发中,使用这些接口和类,程序员可以实现以下功能: - 自动化数据导入导出:从数据库或其他数据源读取数据,填充到Excel工作表,或者从Excel中提取数据到应用程序。 - 数据分析:利用Excel的计算和公式功能...

    Java 接口和抽象类区别

    Java接口和抽象类是两种重要的面向对象编程概念,它们在软件设计中扮演着关键角色,主要用来实现多态性和代码的可扩展性。虽然两者都用于定义类的行为,但它们之间存在着显著的区别。 首先,接口是一种完全抽象的...

    类的设计--接口

    3. **解耦合**:接口使得实现类和调用者之间解耦,两者仅通过接口进行交互,降低了系统的复杂性。 4. **模块化设计**:接口可以作为模块之间的边界,定义模块提供的服务,使模块间的依赖更加清晰。 5. **事件处理*...

    C#类、接口、虚方法和抽象方法-抽象类和接口的相同点和区别

    通过这些理解,我们可以更好地利用抽象类和接口来设计灵活且可扩展的软件架构。在选择使用抽象类还是接口时,应根据项目需求和设计原则来权衡。例如,如果需要共享部分实现并有继承关系,可以选择抽象类;如果需要多...

    针对接口编程 java示例

    在描述中提到的代码中,可能包括了以下接口和类: 1. `Duck`接口:这个接口定义了鸭子的基本行为,比如`quack()`(叫声)和`fly()`(飞行)等方法。 2. 不同的鸭子实现类:例如`MallardDuck`、` RubberDuck`等,...

    as3 接口类的用法和好处

    ### AS3 接口类的用法和好处详解 #### 一、引言 本文将深入探讨Adobe Flash Platform中的ActionScript 3 (AS3) 如何利用接口(interface)来优化程序设计,特别是在需要多态性和扩展性的场景下。首先,我们将通过一个...

    Java定义泛型接口和类的方法实例分析

    Java定义泛型接口和类的方法实例分析 Java定义泛型接口和类的方法实例分析是Java中的一个重要概念,它允许在定义类、接口时指定类型形参,这个类型形参在将在声明变量、创建对象时确定。泛型的引入提高了Java程序的...

    详细解析Java中抽象类和接口的区别

    ### 详细解析Java中抽象类和接口的区别 #### 引言 在面向对象编程中,Java作为一种广泛应用的编程语言,提供了多种方式来实现抽象的概念。其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这...

    集合框架,java中常用的集合类和接口

    * 提高了代码的可维护性:集合框架提供了丰富的接口和类,易于维护和更新。 Java 集合框架的应用场景: * 数据存储:使用集合框架可以存储大量数据,并提供了丰富的操作方法。 * 数据处理:使用集合框架可以对数据...

    .NET中接口与类的区别浅析

    在.NET开发中,接口和类是核心概念之一,它们在代码组织和功能实现中扮演着重要的角色。尽管接口和类在某些方面有相似之处,但它们之间存在着本质的区别,并各自拥有优势和局限性。 首先,让我们来探讨接口和抽象类...

    JAVA 教学 PPt(接口,类和对象尤其详尽)

    【JAVA 教学 PPt(接口,类和对象尤其详尽)】 在Java编程语言中,接口、类和对象是核心概念,对于理解和构建复杂的软件系统至关重要。让我们深入探讨这些主题。 1. 接口(Interface): Java中的接口是一种完全...

    Java中的类、抽象类和接口的区别和联系

    Java中的类、抽象类和接口的区别和联系

    Java API接口详述.rar

    对于开发者来说,它是快速查找特定功能、理解类和接口工作原理的宝贵资源。 总的来说,理解和熟练使用Java API接口和类是成为Java开发者的必备技能。这份“Java API接口详述”资源结合详细的JDK API文档,可以帮助...

    Java容器类接口框架总览1

    Java容器类接口框架是Java集合框架的核心,它提供了一套高效、灵活的数据存储和管理机制。本文将深入探讨Java中的Collection接口及其子接口,包括List、Queue、Deque、Map以及Set接口,同时也会介绍迭代器的相关概念...

Global site tag (gtag.js) - Google Analytics