`
T22刘颖
  • 浏览: 1079 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

抽象类

阅读更多
在面向对象方法中,抽象类主要用来进行类型隐藏。
构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。
这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。
模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;
通过从这个抽象体派生,也可扩展此模块的行为功能。
为了能够实现面向对象设计的一个最核心的原则OCP(Open-Closed Principle),抽象类是其中的关键所在。
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
通过继承它实现多态,后期绑定,可以为将来要实现的东西做好接口,实现重用性,
例如:
abstract class A {
    public abstract void doSomething();
}

class B extends A {
    public void doSomething() {
        System.out.println("do B");
    }
}

class C extends A {
    public void doSomething() {
        System.out.println("do C");
    }
}

public class Test {
    public static void main(Stringp[] args) {
        A a1 = new B();
        A a2 = new C();
        B b = new B();
        C c = new C();
        doSomething(a1); //这里
        doSomething(a2); //这里
         doSomething(b); //这里,如果下面的方法不是用抽象类作参数,比如用C c做参数,这里会有什么问题?
         doSomething(c); //这里
    }

    public static void doSomething(A a) {//这里,用抽象类,为什么,自己思考
        a.doSomething();
    }
}

这个例子只是抽象类的最基本的设计模式,和接口差不多
分享到:
评论

相关推荐

    Java实例化一个抽象类对象的方法教程

    在Java编程语言中,抽象类是用来作为其他类的基类,它定义了一组抽象方法,这些方法必须在子类中实现。由于抽象类自身不能被实例化,这意味着你不能使用`new`关键字直接创建一个抽象类的对象。然而,尽管不能直接...

    c++抽象类继承

    根据给定的信息,我们可以深入探讨C++中的抽象类与继承机制。下面将详细介绍如何通过抽象类和继承在C++中实现特定的功能。 ### 概述 在这个示例中,我们有三个具体的类:`Student`、`Lecture` 和 `Module`,它们都...

    java 抽象类与接口的练习

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,供其他类去实现或继承。在这个练习中,我们将深入理解这两种机制,并通过实际的代码示例和注释来加深理解。 首先,让我们讨论...

    Java抽象类和抽象方法

    在深入探讨Java抽象类与抽象方法之前,我们首先需理解其基本概念以及它们在面向对象编程中的作用。Java作为一种广泛使用的编程语言,提供了多种机制来实现代码的复用性和灵活性,其中抽象类和抽象方法是关键特性之一...

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

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

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

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

    JAVA设计模式(抽象类与适配器模式)

    今天我们要探讨的是JAVA设计中的两个重要模式:抽象类与适配器模式。 首先,我们来理解一下“抽象”。抽象是面向对象编程的核心概念之一,它帮助我们处理对象的复杂性。在Java中,抽象通常通过抽象类来实现。抽象类...

    表面积和体积_抽象类Shape_shape类继承_

    在这个系统中,"表面积和体积_抽象类Shape_shape类继承_"这个主题涉及到的是OOP中的一个重要概念——抽象类和类的继承。 首先,让我们来理解抽象类(Abstract Class)。抽象类是一种特殊的类,它不能被实例化,主要...

    编写一个抽象类Shape

    在这个实验中,我们探讨了如何使用Java编程语言来创建和使用抽象类以及继承的概念。抽象类Shape被设计为一个基础类,它定义了两个抽象方法:`getArea()` 和 `getPerimeter()`,用于计算形状的面积和周长。抽象方法在...

    宠物系统(java抽象类)

    在IT行业中,设计和实现一个宠物系统是一种常见的实践,它可以帮助我们学习和理解面向对象编程的概念,特别是如何利用抽象类来构建系统。本系统以Java为编程语言,它利用了抽象类来定义宠物的基本属性和行为,使得...

    java中接口与抽象类的详细分析与比较

    在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性的关键概念,它们各自有特定的用途和优缺点。本文将深入探讨这两种概念,帮助你理解它们之间的区别以及如何在实际开发中选择使用...

    C#抽象类与抽象方法

    在C#编程语言中,抽象类(abstract class)和抽象方法(abstract method)是面向对象设计中的关键概念,它们主要用于支持多态性。抽象类是一种特殊的类,它不能被实例化,只能作为其他类的基类。抽象方法则是没有...

    抽象类与适配器模式

    抽象类在计算机编程,尤其是面向对象编程中,是一种重要的概念,它用来表示一种不完整的类,其中包含了未实现的方法,通常用于定义一个类族的通用行为。在Java中,抽象类是通过使用`abstract`关键字来标识的。下面将...

    Java中抽象类和接口的区别

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

    接口与抽象类区别

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

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

    ### Java利用接口和抽象类改写求圆的面积和梯形的面积 #### 深入理解Java的接口和抽象类 在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性和代码复用的重要概念。它们都无法被...

    .net 抽象类的演示

    在.NET框架中,抽象类是面向对象编程的一个关键概念,它是用来定义一组接口或提供部分实现的类。抽象类不能直接实例化,只能被作为其他类的基类,这些子类将继承抽象类的特性并可能完成剩余的实现。本教程通过一个...

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

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

    C#抽象类详解文档.doc

    C#中的抽象类是面向对象编程的一个重要概念,它是一种特殊类型的类,设计用来作为其他类的基类。抽象类的主要特点是它不能被实例化,即不能直接创建抽象类的对象。这种特性使得抽象类成为定义接口和实现部分共享行为...

    UML类图中的类 抽象类,具体类,主动类等

    类可以分为抽象类和具体类,以及主动类和非主动类。 1. **抽象类与具体类**: 抽象类(abstract classes)是一种特殊的类,它通常包含了抽象方法(即没有实现的方法)或者没有完全定义的行为。抽象类不能直接实例...

Global site tag (gtag.js) - Google Analytics