`
Funine
  • 浏览: 13227 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

抽象类(abstract class)和接口(Interface)的区别(转)

 
阅读更多

前言

  • 抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予了Java强大的面向对象能力。
  • 二者具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstractclass和Interface的选择显得比较随意。其实,两者之间还是有很大的区别的。
  • 本文将对它们之间的区别进行剖析,并提供一个在二者之间进行选择的依据。

抽象类是什么?

本文中的抽象类表示的是一个抽象体,并非直接从abstract class翻译而来,而abstract class仅仅是Java语言中用于定义抽象类的一种方法,请读者注意区分)

  • 在面向对象的概念中,所有的对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

  • 抽象类的定义
    是对一系列看上去不同,但是本质上相同的具体概念的抽象,往往用来表征我们在对问题进行分析、设计中得出的抽象概念

    • 比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们本质上又都属于这样一个概念:形状,形状这个概念在问题领域是不存在的,所以形状就是一个圆形、三角形的抽象类。
    • 正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能实例化的。

为什么要有抽象类?

  • 用于类型隐藏
    在面向对象领域,抽象类主要用来进行类型隐藏。我们可以构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类。
  • 用于拓展对象的行为功能
    这一组任意个可能的具体实现则表现为所有可能的派生类(子类),模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;同时,通过从这个抽象体派生,也可扩展此模块的行为功能。

如何进行抽象类的定义?

抽象类(abstract class)和接口(Interface)在Java语言中都是用来进行抽象类定义的两种主要方法

抽象类(abstract class)

  • 定义:包含抽象方法的的类是abstract class

    用abstract关键字修饰

分享到:
评论

相关推荐

    abstract class和interface有什么区别?

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

    Java中抽象类和接口的区别

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

    深入理解abstract class和interface

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

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

    现在,让我们看看抽象类和接口的相同点和区别: 相同点: 1. 都可以被继承,为派生类提供共享的行为和属性。 2. 都不能被实例化,只能作为其他类的基础。 3. 都可以包含方法声明,定义公共行为。 不同点: 1. 抽象...

    [转]深入理解abstract class和interface

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

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

    "详细解析 Java 中抽象类和接口的区别" 从面向对象的角度来看,抽象类和接口是 Java 语言中支持抽象类定义的两种机制。它们之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换。然而,两者之间还是...

    java abstract class interface之间的区别介绍

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

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

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

    Java抽象类和接口和继承之间关系

    在Java中,抽象类(abstract class)和接口(interface)都是用来描述对象的行为和状态的,但它们之间有着明显的区别。 首先,让我们来看一下抽象类。抽象类是一种特殊的类,它不能被实例化,仅供子类化使用。抽象...

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

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

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

    综上所述,虽然抽象类和接口在实现多态方面具有相似的目标,但它们之间存在明显的区别。选择使用哪一种取决于具体的应用场景和个人的设计偏好。理解这些差异有助于更好地设计出健壮、可维护的软件系统。

    C++中抽象类和接口的区别介绍

    首先,抽象类(Abstract Class)是一种不能被实例化的类,它通常包含至少一个纯虚函数(即只有声明没有实现的函数)。抽象类的主要目的是为了提供一种基类,让其他类能够继承它的属性和行为,同时通过强制子类实现...

    接口与抽象类区别

    三、抽象类和接口的区别 相似点: 1. 都可以被继承。 2. 都不能被实例化。 3. 都可以包含方法声明。 4. 派生类必须实现未实现的方法。 区别: 1. 抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引...

    java中abstractclass和Interface.doc

    抽象在面向对象编程中体现为两种主要形式:`abstract class`(抽象类)和`interface`(接口)。这两者在Java语言中都扮演着极其重要的角色,它们有助于提高代码的复用性、可维护性和可扩展性。 #### 二、Abstract ...

    抽象类和接口的区别

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

    1.5:接口和抽象类的区别.pdf

    4.实现抽象类和接口的类必须实现其中的所有方法。 抽象类中可以有非抽象方法。接口中则不能有实现方法。如果接口或者抽象类的子类不想实现则继续携程一个抽象方法 5.接口中定义的变量默认是public static final ...

    java抽象类与接口区别

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

    JAVA中抽象类和接口的区别

    在Java语言中,abstract class 和interface 是支持抽象类定义的两种机制区别

Global site tag (gtag.js) - Google Analytics