C++抽象类实践

实践如下:

#include <iostream>
using namespace std;

class Service {

public:
    // 有一个虚函数即为抽象类
    int id;
    // 不定义虚析构函数 会报右侧异常:@suppress("Class has a virtual method and non-virtual destructor")
    virtual ~Service(){}
    virtual double calc()=0;
    int aa(){
        return 11;
    }
};

class AService: public Service {
public:
    //virtual ~AService(){}
    double calc() {
        // 操作抽象类中定义的字段
        id = 100;
        cout << "id:" << id << endl;

        cout << "AService 100~~~" << endl;
        return 100;
    }
};
class BService: public Service {
public:
    //virtual ~BService(){}
    double calc() {
        cout << "BService 200~~~" << endl;
        return 200;
    }
};

int main() {

    cout << "抽象类 实践:" << endl;

    Service *s = new AService();
    s->calc();

    cout << "\n抽象类 end." << endl;

    return 0;
}

结果:

原文地址:https://www.cnblogs.com/do-your-best/p/11211179.html

时间: 2024-10-24 23:02:48

C++抽象类实践的相关文章

java抽象类实践

package javaClassStudy; /** * * @author yuxg * 抽象类实践 */ public abstract class Person { private String name ; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public vo

Java io包中特殊的抽象类FilterReader和FilterWriter实践

刚才在看帮助文档的时候,发现Java io包中FilterReader和FilterWriter类没使用过,所以想实践一下. 还用以前的老方法,new一个出来,结果提示有错误: Cannot instantiate the type FilterReader 不能实例化? 一查帮助文档原来这样写道: public abstract class FilterReader extends Reader Abstract class for reading filtered character str

C#OOP之八 继承 接口和抽象类

继承 在现实生活中有所谓的"种瓜得瓜.种豆得豆"的说法,在生物学概念上就是"遗传"的概念,在面向对象中"继承"就类似于生物学中的遗传,通过继承,可以更好的实现代码的重用(复用,多次使用的意思).增加扩展性.简化代码等. 下面是现实生活中的引用: 定义与使用继承 继承一次最常用的就是通过合法程序(比如遗嘱)从别人那里接受财产或爵位等,有点类似于世袭制. 另外一个含义,是人从父母那里继承一些特征,如果孩子从父母继承的身高.相貌等特征.那么在什么情况下

精通Spark的开发语言:Scala最佳实践

Scala是一门以JVM为目标运行环境并将面向对象和函数式编程语言的最佳特性结合在一起的编程语言,此课程是大数据框架Spark的前置课程: 1,   Spark框架是采用Scala语言编写的,精致而优雅.要想成为Spark高手,你就必须阅读Spark的源代码,就必须掌握Scala: 2,         虽然说现在的Spark可以采用多语言Java.Python等进行应用程序开发,但是最快速的和支持最好的开发API依然并将永远是Scala方式的API,所以你必须掌握Scala来编写复杂的和高性能

对接口编程:接口和抽象类

在<大话设计模式>这本书中,我会听到这个字眼"对接口编程",而在文中的类图中,会提出这样一个疑问?为什么有的用的是:接口?有的用的是抽象类呢? 本文主要介绍以下内容:接口.抽象类. 文章的最后,会给出软考下午设计模式题中的一些做题技巧 ? 什么是接口? 接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称.参数和返回值.接口方法不能包含任何实现,CLR 允许接口可以包含事件.属性.索引器.静态方法.静态字段.静态构造函数以及常数. 注意:一个类可以实现多个接口,当一个类

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

abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意. 其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解.对于设计意图的理解是否正确.合理.

EntityFramework之领域驱动设计实践

EntityFramework之领域驱动设计实践 - 前言 EntityFramework之领域驱动设计实践 (一):从DataTable到EntityObject EntityFramework之领域驱动设计实践 (二):分层架构 EntityFramework之领域驱动设计实践 (三):案例:一个简易的销售系统 EntityFramework之领域驱动设计实践 (四):存储过程 - 领域驱动的反模式 EntityFramework之领域驱动设计实践 (五):聚合 EntityFramewor

敏捷软件开发:原则、模式与实践——第11章 DIP:依赖倒置原则

第11章 DIP:依赖倒置原则 DIP:依赖倒置原则: a.高层模块不应该依赖于低层模块.二者都应该依赖于抽象. b.抽象不应该依赖于细节.细节应该依赖于抽象. 11.1 层次化 下图展示了一个简单的层次化方案: 高层的Policy层使用了低层的Mechanism层,而Mechanism层又使用了更细节的Utility层.它存在一个隐伏的错误特征,那就是:Policy层对于其下一直到Utility层的改动都是敏感的.依赖关系是传递的. 下图展示了一个更为合适的模型: 每个较高层次都为它所需要的服

atitit.设计模式(1)--—职责链模式(chain of responsibility)最佳实践O7 日期转换

atitit.设计模式(1)---职责链模式(chain of responsibility)最佳实践O7 日期转换 1. 需求:::日期转换 1 2. 可以选择的模式: 表格模式,责任链模式 1 3. 调用代码 2 4. 责任链链的特性: 2 5. 模式结构 4 6. 职责链模式包含如下角色:Handler,ConcreteHandler: 具体处理者,HandlerChainUtil ,Client 4 7. 设置哈一个handler,,两个法:排序法,指定法 5 1. 指定法 5 2. 排