`
i_am_birdman
  • 浏览: 281877 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Abstract Class and Interface 抽象类与接口的区别

阅读更多
abstract Methods and Classes ---抽象方法和抽象类







    An abstract class is a class that is declared abstract,it may or may not include abstract methods. Abstract classes cannot be instantiated, but they can be subclassed.



    以abstract声明的类就是抽象类,抽象类可以有或者没有抽象方法。抽象类不能实例化,但他们可以被子类化。



    An abstract method is a method that is declared without an implementation (without braces, and followed by a semicolon), like this:



   抽象方法就是被声明为没有实现的方法的(没有大括号,直接以分号结束),如下所示



        abstract void moveTo(double deltaX, double deltaY);







    If a class includes abstract methods, the class itself must be declared abstract, as in:



    假如一个类有抽象方法,那这个类也必须声明为抽象的。如下所示



        public abstract class GraphicObject {



           // declare fields



           // declare non-abstract methods



           abstract void draw();



        }







    When an abstract class is subclassed, the subclass usually provides implementations for all of the abstract methods in its parent class. However, if it does not, the subclass must also be declared abstract.



    当抽象类被子类化时,子类通常要提供所有父类中的抽象方法的实现, 假如没有这样做,那么子类也必须声明为抽象类。



     Note: All of the methods in an interface (see the Interfaces section) are implicitly abstract, so the abstract modifier is not used with interface methods (it could be  it's just not necessary).



    注意:所有接口中的方法(可参考接口部分)默认就是抽象的,所以abstract这个修饰符不用使用(他已经是了,所以不需要了)



   Abstract Classes versus Interfaces ----抽象类VS接口



Unlike interfaces, abstract classes can contain fields that are not static and final, and they can contain implemented methods. Such abstract classes are similar to interfaces, except that they provide a partial implementation, leaving it to subclasses to complete the implementation. If an abstract class contains only abstract method declarations, it should be declared as an interface instead.



     不同于接口,抽象类可以包含一二不是static和final的域,他也可以包含实现的方法。这样的抽象类与接口类似,除了他们提供了部分实现,让子类完成实现。假如抽象类只包含抽象方法,他应该被声明为接口,而不是抽象类。



Multiple interfaces can be implemented by classes anywhere in the class hierarchy, whether or not they are related to one another in any way. Think of Comparable or Cloneable, for example.



     类层次可以实现多个接口,不管这些接口在那个层次上是相关的,例如接口Comparable ,Cloneable



By comparison, abstract classes are most commonly subclassed to share pieces of implementation. A single abstract class is subclassed by similar classes that have a lot in common (the implemented parts of the abstract class), but also have some differences (the abstract methods).







     通过比较,抽象类通过子类化时要共享一些实现。单个的抽象类被类似的类子类化,这些类似类有许多相同点(抽象类的实现部分),也有一些不同点(抽象方法)



When should you use an abstract class, when an interface , when both? Interfaces and abstract classes seem superficially to provide almost the same capability. How do you decide which to use?

When To Use Interfaces



An interface allows somebody to start from scratch to implement your interface or implement your interface in some other code whose original or primary purpose was quite different from your interface . To them, your interface is only incidental, something that have to add on to the their code to be able to use your package.

When To Use Abstract classes



An abstract class, in contrast, provides more structure. It usually defines some default implementations and provides some tools useful for a full implementation. The catch is, code using it must use your class as the base. That may be highly inconvenient if the other programmers wanting to use your package have already developed their own class hierarchy independently. In Java, a class can inherit from only one base class.

When to Use Both



You can offer the best of both worlds, an interface and an abstract class. Implementors can ignore your abstract class if they choose. The only drawback of doing that is calling methods via their interface name is slightly slower than calling them via their abstract class name.

Summary Table
http://blog.csdn.net/russle/archive/2009/08/16/4453777.aspx
分享到:
评论

相关推荐

    Java中抽象类和接口的区别

    在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...

    abstract class和interface有什么区别?

    ### abstract class和interface有什么区别? 在面向对象编程中,`abstract class` 和 `interface` 都是用来实现抽象化的工具,但它们之间存在着重要的差异。理解这些差异有助于开发者更有效地设计和实现软件系统。 ...

    java抽象类与接口区别

    在Java编程中,抽象类(Abstract Class)与接口(Interface)都是实现抽象的关键工具。它们各自有着独特的优势和适用场景,掌握这两者的区别有助于开发者更好地设计系统架构。本文将深入探讨Java抽象类与接口的区别...

    深入理解abstract class和interface

    abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的...

    class.forname的作用 详细解析抽象类和接口的区别

    使用 abstract class 的方式定义抽象类可以有自己的数据成员,也可以有非 abstract 的成员方法,而使用 interface 的方式定义抽象类只能有静态的不能被修改的数据成员(也就是必须是 static final 的),所有的成员...

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

    这里我们将详细讨论这些概念以及抽象类与接口之间的相同点和区别。 首先,让我们来看看抽象类(Abstract Class): 1. 抽象方法是只有声明没有实现的方法,可以视为没有方法体的虚方法。例如: ```csharp public ...

    JAVA中抽象类与接口的区别

    在Java编程语言中,抽象类(Abstract Class)与接口(Interface)是实现抽象与多态性的两种关键机制。这两种机制的出现,极大地丰富了Java语言的面向对象特性,并为开发者提供了更为灵活的设计选择。下面将从多个...

    java abstract class interface之间的区别介绍

    在Java编程语言中,抽象类(abstract class)和接口(interface)都是用于实现抽象化的重要工具,它们可以帮助程序员更好地组织代码,提高代码的可复用性和扩展性。尽管二者在功能上有一些相似之处,但在实际使用中...

    抽象类与接口的区别

    ### 抽象类与接口的区别 #### 一、理解抽象类与接口的基本概念 在面向对象编程中,抽象类和接口都是重要的概念,用于描述共有的特性或行为,但它们在实现方式和用途上有所不同。 **抽象类**: - **定义**:抽象类...

    java 抽象类与接口的练习

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计...通过这样的练习,你可以更好地理解和掌握Java中的抽象类与接口,以及它们在实际开发中的应用。在实践中不断尝试和调试,将有助于深化对这两个概念的理解。

    JAVA 继承基本类、抽象类、接口区别与联系

    ### JAVA继承基本类、抽象类、接口的区别与联系 #### 一、概述 在Java语言中,类(Class)的设计是面向对象编程的核心之一。Java提供了三种方式来扩展类的功能:基本类、抽象类和接口。这三者之间既有相似之处,也...

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

    其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这两种机制虽然在某些场景下可以互相替代,但它们在设计原则、实现细节以及应用场景上存在明显的区别。了解这些差异有助于开发者在面对具体...

    C#中抽象类和接口的区别.txt

    ### C#中抽象类与接口的区别 在C#编程语言中,抽象类和接口都是用于实现面向对象编程中多态特性的关键概念。它们都旨在为其他类提供一种定义行为和特性的模板或规范,但它们之间存在着重要的区别。本文将详细探讨C#...

    [转]深入理解abstract class和interface

    在编程领域,`abstract class`(抽象类)和`interface`是两种重要的设计模式,它们在构建可扩展和模块化的软件系统中起着至关重要的作用。这篇文章将深入探讨这两个概念,以及它们在实际开发中的应用。 首先,让...

    第7章 抽象类与接口.ppt

    首先,抽象类(abstract class)是一种不能被实例化的类,它通常含有至少一个抽象方法(即没有方法体的方法)。抽象类的主要目的是作为其他类的基类,提供共同的属性和方法。在Java中,使用`abstract`关键字来声明一...

    Java中抽象类和接口的区别与作用详解

    ### Java中抽象类和接口的区别与作用详解 #### 一、引言 在Java编程语言中,`abstract class`和`interface`是两种用于定义抽象类的重要机制。这两种机制不仅支持了Java的强大面向对象特性,而且也在实际开发过程中...

    接口与抽象类区别

    接口与抽象类区别 在软件开发中,接口和抽象类是两个常用的概念,但它们之间的区别却让许多人感到困惑。那么,什么是抽象类和接口?它们之间有什么区别?下面,我们就来详细地探讨这个问题。 一、抽象类 抽象类是...

    PHP抽象类与接口的区别实例详解

    1. 继承与实现:抽象类使用关键字extends来继承,而接口使用关键字implements来实现。 2. 方法和属性:抽象类可以包含变量(属性)、常量和方法,接口只能定义常量和方法,不能定义变量。 3. 方法的访问控制:抽象类...

    抽象类和接口的区别

    ### 抽象类与接口的区别 在面向对象编程中,抽象类和接口是两种非常重要的概念,它们在软件设计和实现过程中发挥着不可替代的作用。本文将深入探讨这两种概念的区别,帮助开发者更好地理解和运用它们。 #### 一、...

Global site tag (gtag.js) - Google Analytics