立方体类公用抽象类

写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形)、Rectangle(矩形)、Triangle(三角形)。用如下的main()函数,求出定义的几个几何体的面积和

程序代码

#include <iostream>

using namespace std;

class CSolid//立方体类
{
public:
    //计算立方体的表面积
    virtual double Area() = 0;

    //计算立方体的体积
    virtual double Volume() = 0;
};

//立方体类派生出正方体类
class CCube : public CSolid
{
public:
    CCube(double a)
    {
        this->a = a;
    }

    //计算正方体的表面积
    virtual double Area()
    {
        return 6 * a * a;
    }

    //计算正方体的体积
    virtual double Volume()
    {
        return a * a * a;
    }

protected:
    int a;//正方体的边长
};

//立方体类派生出球体类
class CBall : public CSolid
{
public:
    CBall(double r)
    {
        this->r = r;
    }

    //计算球体的表面积
    virtual double Area()
    {
        return 4 * 3.14 * r * r;
    }

    //计算球体的体积
    virtual double Volume()
    {
        return 4 * 3.14 * r * r;
    }

protected:
    double r;
};

//立方体类派生出圆柱体类
class CCylinder : public CSolid
{
public:

    CCylinder(double r, double h)
    {
        this->r = r;
        this->h = h;
    }

    //计算圆柱体的表面积
    virtual double Area()
    {
        return 2 * 3.14 * r * (r + h);
    }

    //计算圆柱体的体积
    virtual double Volume()
    {
        return 3.14 * r * r * h;
    }

protected:
    double r;
    double h;
};

void main()
{
    CSolid *p;//立方体对象指针
    double s,v;//分别保存表面积和体积

    //正方体
    CCube x(30);
    cout<<"正方体体边长为 30 "<<endl;
    p=&x;
    s=p->Area( );
    v=p->Volume( );
    cout<<"表面积:"<<s<<endl;
    cout<<"体积:"<<v<<endl;
    cout<<endl;  

    //球
    CBall y(4.5);
    cout<<"球体半径为 4.5 "<<endl;
    p=&y;
    s=p->Area( );
    v=p->Volume( );
    cout<<"表面积:"<<s<<endl;
    cout<<"体积:"<<v<<endl;
    cout<<endl;  

    //圆柱体
    CCylinder z(10,20);
    cout<<"圆柱体底面半径、高分别为 10, 20"<<endl;
    p=&z;
    s=p->Area( );
    v=p->Volume( );
    cout<<"表面积:"<<s<<endl;
    cout<<"体积:"<<v<<endl;
    cout<<endl;  

    system("pause");
}

执行结果:

时间: 09-20

立方体类公用抽象类的相关文章

PHP中的特殊类,接口类和抽象类(都不能直接实例化)

接口类不用实例化,需要一一实现接口定义的所有方法.关键字interface implements 接口interface 是一个规定,给人继承用的东西,有点像抽象类在里面定义的方法,却不去实例化,而需要别的类去implements 它,而且必须一一实现接口定义的所有方法, 实际上接口类说白了,就是一个类的模板,一个类的规定, 举个例子interface Shop { public function buy($gid); public function sell($gid); public fun

重拾C++之虚函数和虚基类以及抽象类

一.引言 好久没接触过C++了,今天突然要用一点感觉号蛋疼,用惯了python感觉C++一点都不会了. 声明了一个类的对象居然用这种方法,脑子绝对是被驴(python)踢了 class A{  ...  }  a=A();//尼玛这都能行,被踢大了 二.虚函数和一般函数 虚函数就是加了vritual关键字的函数,引入虚函数的目的是为了实现多态性(在此为运行时的多态性),即可以通过父类的指针调用子类的对象,从而产生不同的效果.     virtual void show(){         co

java普通类、抽象类、接口、面向对象理解

1.面向对象编程: 面向对象编程的语言不止java一种,还有: simula 67(第一个面向对象语言,支持单继承和一定含义的多态和部分动态绑定): Smalltalk(第一个支持动态类型的语言,支持单继承.多态和动态绑定): EIFFEL(支持多继承.多态和动态绑定): C++(它的大部分基于类的特性继承自Simula.支持多继承.多态和部分动态绑定): C#(也支持单继承,与Java和C++等有很多类似之处): Python( [?pa?θ?n]是一种解释型.面向对象.动态数据类型的高级程序

abstract修饰符,具体类与抽象类的区别

abstract修饰符 abstract可以修饰类,表示一个抽象类,注意:抽象类和具体类唯一的区别:类不能创建对象,而具体类是可以创建对象的 1.具体类有构造方法,抽象类也有构造方法 2.具体类可以有实例属性,抽象类也可以有实例属性 3.具体类可以有实例方法,抽象类中也可以有实例方法 4.具体类可以继承另外一个具体类,抽象类也可以继承另外一个具体类 abstract可以修饰一个方法,表示这是一个抽象方法,中有方法的声明,没有实现. 抽象类就是专门用来被继承的 一个类继承抽象类的时候,如果实现了抽

关于类、抽象类和接口的继承关系

关于类.抽象类和接口的继承关系 一.类和抽象类 当实体类Impl继承一个抽象类Abstract,该实体类Impl可以不用实现抽象类Abstract中的所有方法,但是必须实现抽象类中的所有抽象方法. 二.类和接口 当实体类Impl直接实现接口Interface,那么该实体类Impl必须是想接口Interface里面的所有接口方法. 三.抽象类和接口 当抽象类Abstract实现接口Interface,抽象类可以实现接口中的部分接口方法,也可以完全不实现任何接口方法. 理解:因为抽象类的功能类似接口

023_接口类,抽象类,多态,鸭子类型,封装

1,接口类 1 class Wechat(): 2 def pay(self,money): 3 print('已经用微信支付了%s元'%money) 4 class Alipay(): 5 def pay(self,money): 6 print('已经用支付宝支付了%s元' % money) 7 wechat = Wechat() 8 ali = Alipay() 9 # wechat.pay(100) 10 # ali.pay(200) 11 #将上面两句用下面的替换, 12 def pa

初识面向对象-接口类、抽象类、封装

接口类 # java : 面向对象编程# 设计模式 —— 接口# 接口类 : python原生不支持# 抽象类 : python原生支持的from abc import abstractmethod,ABCMetaclass Payment(metaclass=ABCMeta): # 元类 默认的元类 type @abstractmethod def pay(self,money):pass # 没有实现这个方法# 规范 :接口类或者抽象类都可以# 接口类 支持多继承,接口类中的所有的方法都必须

15、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

接口可以继承接口.抽象类可以实现(implements)接口,抽象类可以继承具体类.抽象类中可以有静态的main方法. 问:  抽象类是否可继承实体类 (concrete class) 答: 抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数. 答案很明确,可以继承.其实从Object就是个实体类,Java的API文档里,每个抽象类的条目里都明确写着直接或间接继承自Object,所以这点是没有疑问的. 关键在于这答案里所说的“前提是实体类必须有明确的构造函数”一句,是什么意思. 一般学习

python 接口类、抽象类、多态

参考https://www.cnblogs.com/Fantac/p/11481114.html 接口类和抽象类总结 在python中没有接口类,但有抽象类;abc模块中的metaclass = ABCMeta,@abstractmethod它的本质是做代码的规范用的,希望子类中能实现父类名字完全一样的方法 接口类和抽象类: 从java的角度上看是有区别的,java本来就支持单继承所以就有了抽象类;java没有多继承,所以为了接口隔离原则,设计了接口这个概念,支持多继承了 而python它既支持