建立抽象类和建立普通类的区别在哪里

时间: 2024-03-31 16:38:54 浏览: 11
C++中建立抽象类和建立普通类的区别主要在于是否包含纯虚函数。 抽象类是一种特殊的类,不能被实例化,只能被用作父类来派生子类。抽象类可以包含成员变量、成员函数和纯虚函数。纯虚函数是一种没有函数体的虚函数,必须在子类中被实现。抽象类可以作为一种接口来使用,提供一些默认的实现,同时也可以通过纯虚函数强制子类去实现某些特定的行为或功能。 普通类是一种可以被实例化的类,可以包含成员变量和成员函数。其成员函数可以是虚函数,也可以是普通的函数。普通类一般用来描述具体的对象和行为,而不是作为一种接口来使用。 因此,建立抽象类和建立普通类的区别在于抽象类中必须包含纯虚函数,而普通类中则不需要。抽象类是一种抽象的概念,普通类则是一种具体的实现。
相关问题

建立一个java抽象类drink

好的,我可以为您创建一个Java抽象类Drink,如下所示: ``` public abstract class Drink { // 定义抽象方法,用于获取饮料名称 public abstract String getName(); // 定义抽象方法,用于获取饮料的价格 public abstract double getPrice(); // 定义普通方法,用于展示饮料的信息 public void display() { System.out.println("饮料名称:" + getName()); System.out.println("饮料价格:" + getPrice()); } } ``` 这个抽象类中包含两个抽象方法,分别用于获取饮料的名称和价格。同时也包含一个普通方法display,用于展示饮料的信息。由于这是一个抽象类,因此不能直接实例化,需要通过继承这个类来创建具体的饮料类。

利用抽象类编写一个程序实现公交车卡售票管理。当输入为“老年卡”、“学生卡”和“普通卡”时显示不同的卡类,及购票金额(“老年卡”购票金额=原价*50%、“学生卡”购票金额=原价*60%、“普通卡”购票金额=原价*95%)。 具体实现步骤: 第一步:建立公交卡(boardingcard)的结构

首先,我们可以建立一个抽象类`BoardingCard`,它具有一个抽象方法`getType()`,用于返回卡的类型。此外,我们还可以在这个抽象类中包含一个抽象方法`getPrice()`,用于返回购票金额。 第二步:定义公交卡的三个类型 接下来,我们可以定义三个类来表示公交卡的三种类型:`SeniorCard`(老年卡)、`StudentCard`(学生卡)和`NormalCard`(普通卡)。这三个类分别继承自`BoardingCard`类,并实现`getType()`和`getPrice()`方法。 第三步:实现卡类的判断和购票功能 最后,我们可以编写一个类来实现公交卡的售票管理。该类可以包含一个方法,用于根据输入的卡类型创建对应的公交卡对象,并调用`getPrice()`方法来获取购票金额。 以下是使用Java语言编写的程序的示例代码: ``` // 定义抽象类BoardingCard public abstract class BoardingCard { public abstract String getType(); // 返回卡的类型 public abstract double getPrice(); // 返回购票金额 } // 定义公交卡的三个类型 public class SeniorCard extends BoardingCard { @Override public String getType() { return "老年卡"; } @Override public double getPrice() { // 老年卡购票

相关推荐

假设一个公司的员工分为志愿者Volunter和普通员工Employee,请先设计一个StuffMember的抽象类作为不同类型员工的父类,包含员工都具有的name,address以及phone属性(建议是public 或者是protected类型)。且:(1)需要建议以下格式的构造函数,并补充构造函数内的语句Public StuffMember(String ename, String eaddress,String iphone)(2)需要构造一个抽象方法:public abstract double pay();(3) 需要建立一个toString方法返回StuffMember的信息,请补充toString方法的方法体Public String toString(){}完成Volunter类,该类继承了StuffMember的抽象类并需要重载父类的pay()方法.(1) Volunter类中的pay方法返回一个浮点的0值就可以了。(2) 请显示定义Volunter类的带参数的构造函数。完成有薪资的Employee类,该类继承了StuffMember的抽象类,并含有自己的属性社会保险号String 类型的sccialSecurityNumber,和酬金率double 类型的payRate。(1)请建立5个参数的构造函数。(2) 请需要建立一个toString方法返回Employee的信息,请补充toString方法的方法体。(3) 建立Employee类的pay() 方法,该方法只返回员工的payRate*2500。建立Excutive类继承了Employee类,并包含一个double类型的奖金属性bonus。(1) 建立Excutive类的包含6个参数的构造函数(2) 重构pay()方法,需要实现工资计算Payment=super.pay() +bonus; Bonus=0;完成按小时付钱的员工类Hourly类,该类继承了Employee类,并包含一个double类型的奖金属性double hourWorked。(1) 建立Hourly类的包含6个参数的构造函数(2) 重构pay()方法,需要实现工资计算Payment=super.payRate * hourWorked; hourWorked=0;(3) 建立toStr

最新推荐

recommend-type

传智播客_C++基础课程讲义_v1.0.7

5.3抽象类在多继承中的应用 6 5.3.1有关多继承的说明 6 5.3.2多继承的应用场景 6 5.4抽象类知识点强化 6 5.5面向抽象类编程思想强化 6 5.4.1案例:socket库c++模型设计和实现 6 5.4.2案例:计算员工工资 6 5.4.3案例...
recommend-type

二十三种设计模式【PDF版】

会 Java 的人越来越多,但是一直徘徊在语言层次的程序员不在少数,真正掌握 Java 中接口或抽象类的应用不是很多,大家 经常以那些技术只适合大型项目为由,避开或忽略它们,实际中,Java 的接口或抽象类是真正体现 ...
recommend-type

Delphi 7以来的新语法特性

这两个概念在OO中也并不陌生,抽象类是不应该创建实例的(但D2006起的编译器就不给检查,连个Warning都没有,这还有啥用啊 -.- ),而固实类是不能被继承的。语法: TAnAbstractClass = class abstract // or ...
recommend-type

java-servlet-api.doc

Servlet引擎载入Servlet后,Servlet引擎必须对Servlet进行初始化,在这一过程中,你可以读取一些固定存储的数据、初始化JDBC的连接以及建立与其他资源的连接。 在初始化过程中,javax.servlet.Servlet接口的init()...
recommend-type

智能制造的数字化工厂规划qytp.pptx

智能制造的数字化工厂规划qytp.pptx
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。