`
sixingbugai
  • 浏览: 21523 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

抽象类的说明

 
阅读更多

           抽象类通常代表一个抽象的概念,它提供一个继承的出发点,而具体类则不同,具体类可以被实例化。因此,抽象类是用来继承的,具体类不是用来继承的。

代码重构:如果有两个具体类之间有继承的关系,那么最好就是建立一个抽象类,这两个具体类成为抽象类的子类。

抽象类应当拥有尽可能多的共同代码:在一个从抽象类到多个具体类的继承关系中,共同的代码应当尽量移到抽象类里

抽象类应拥有尽可能少的数据

继承代表“一般化/特殊化”关系,其中基类代表一般化,而衍生类代表特殊,衍生类是将基类特殊化或扩展化,只有当满足下列条件时,才使用继承关系:

       (1)子类是超类的一个特殊种类,而不是超类的一个角色。即要区分“has-A”关系还是“is-A”的关系,“has-A”关系应当使用聚合关系来描述,“is-A”的关系才符合继承关系。

     (2)永远不会出现需要将子类换成另一个子类的情况,

     (3)子类具有扩展超类的责任,而不是具有置换掉(overrid)或注销掉(nullify)超类的责任,如果子类需要大量的置换掉超类的行为,那么这个子类就不应当成为超类的子类。

   (4)只有在分类学上有意义时,才可以使用继承关系,不要从工具类继承

 

分享到:
评论

相关推荐

    C#抽象类与抽象方法

    以下是一个简单的例子来说明抽象类和抽象方法的使用: ```csharp public abstract class Animal { public abstract void MakeSound(); } public class Dog : Animal { public override void MakeSound() { ...

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

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

    java抽象类与接口区别

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

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

    本文将详细探讨C#中的抽象类与接口之间的差异,并通过具体的例子来说明这些差异。 #### 一、基本概念 **抽象类(Abstract Class)**: 1. **定义**:抽象类是一种不能被实例化的特殊类。它通常包含一个或多个抽象...

    抽象类和接口

    在Java编程语言中,抽象类和接口是两个核心的概念,它们在实现多态性和组织类结构方面起着重要作用。抽象类和接口虽然在某些方面看似相似,但它们在用法和含义上有着明显的区别。 首先,抽象类是一种特殊的类,它...

    Abstract抽象类用作模板的事例

    本资源是抽象类在实际应用中的一个例子,列举了学生写作文的例子进行详细的说明!

    定义一个形状类(抽象类)以及一个普通成员函数(用来重设形状大小)、两个纯虚成员函数-周长计算函数和面积计算函数

    定义一个形状类(抽象类)以及一个普通成员函数(用来重设形状大小)、两个纯虚成员函数-周长计算函数和面积计算函数,利用该类及其派生类实现圆形、三角形、矩形和梯形等图形的周长和面积的计算;主函数完成基类和...

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

    我们举个简单的例子来说明抽象类的使用: ```php // 定义一个抽象类 abstract class AbstractClass { // 定义抽象方法 abstract protected function getValue(); abstract protected function prefixValue($...

    Java面向对象(高级)- 抽象类与抽象方法(或abstract关键字)

    【Java面向对象(高级)- 抽象类与抽象方法(或abstract关键字)】 在Java编程语言中,面向对象编程是其核心特性之一。抽象类和抽象方法是面向对象编程中的重要概念,它们允许程序员创建一种通用的模板,用于定义一...

    Java面向对象程序设计PPT.ppt

    访问控制符用来说明类的特殊性质,分为三种:public 公共类、抽象类说明符 abstract 和最终类说明符 final。 8. 静态修饰符、静态字段和方法 静态修饰符用来说明类的静态成员变量或静态成员方法,静态成员变量或...

    SSH集成+分页抽象类+自定义标签 == 分页数据效果

    例如,我们可以定义一个名为`BasePageService`的抽象类,其中包含`queryByPage()`方法,用于根据条件和分页参数执行SQL查询,并返回分页结果。业务服务层的其他类可以继承这个基类,重写必要的部分以满足特定需求。 ...

    Java 抽象类教程含示例源码

    这说明抽象类不能被实例化,只能被继承。继承抽象类可以通过以下方式实现: ``` public class Salary extends Employee { private double salary; //Annual salary public Salary(String name, String address, ...

    基于UML模型的NGN业务安全分析

    利用UML安全扩展UMLsec对NGN中的业务安全需求进行分析建模,提出了一种细粒度的安全需求分析方法,通过抽象出安全功能抽象类说明NGN业务的安全特性需求。并通过用例讨论了基于安全应用接口的安全需求实现,使得各种...

    实验4-多态与抽象类.doc

    - **说明**:通过定义抽象类`Student`,确保所有继承自它的子类都必须实现`study`和`rest`方法。`Undergraduate`和`Postgraduate`类分别给出了具体的实现。 以上实验内容涵盖了Java中的抽象类、接口以及多态性的...

    Java抽象类和接口综合练习设计门禁系统 含源码

    在Java编程中,抽象类和接口是两种重要的面向对象特性,它们用于定义规范和实现多态性。在这个门禁系统的设计实践中,我们将深入探讨这两种概念及其应用。 首先,让我们了解抽象类。在Java中,抽象类是一种不能被...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

     abstract 说明一个类为抽象类,抽象类是指不能直接实例化对象的类。  final 说明一个类为最终类,即改类不能再有子类。  public 说明类为公共类,该类可以被当前包以外的类和对象使用。  private 说明类为...

    面向对象理论——太基础了以至于面试出错

    - **抽象类说明符**:`abstract`(表示类是抽象的,不能实例化) - **最终类说明符**:`final`(防止类被继承) - **静态修饰符**:`static`(类级别的变量或方法,不依赖于类的实例) - **最终修饰符**:`final...

    PHP中抽象类和抽象方法概念与用法分析

    抽象就是无法确切的说明,但又有一定的概念或者名称,在PHP中声明一个抽象类或者方法我们需要使用adstract关键字。 二、抽象方法和抽象类的定义 一个类中至少有一个方法是抽象的,我们称之为抽象类。所以如果定义...

    基于Servlet的抽象分页类

    在"基于Servlet的抽象分页类"中,这个类可能被设计为抽象类,提供基本的分页逻辑,并允许子类根据具体需求进行扩展。例如,子类可以重写数据获取方法以适应不同的数据源,如JDBC查询或ORM框架(如Hibernate、MyBatis...

    第4次实验报告-抽象类和接口 .doc

    实验报告涉及了Java编程语言中的核心概念,包括抽象类、接口和多态性。以下是相关知识点的详细说明: 1. **抽象类**:抽象类是一个不能被实例化的类,它通常包含一个或多个抽象方法。抽象方法没有具体的实现,需要...

Global site tag (gtag.js) - Google Analytics