当前位置:网站首页>声明一个抽象类Vehicle,它包含私有变量numOfWheels和公共函数Vehicle(int)、Horn()、setNumOfWheels(int)和getNumOfWheels()。子类Mot

声明一个抽象类Vehicle,它包含私有变量numOfWheels和公共函数Vehicle(int)、Horn()、setNumOfWheels(int)和getNumOfWheels()。子类Mot

2022-07-01 12:44:00 laocooon

声明一个抽象类Vehicle,它包含私有变量numOfWheels和公共函数Vehicle(int)、Horn()、setNumOfWheels(int)和getNumOfWheels()。子类Motorcycle和Truck通过公共继承从类Vehicle派生而来。

Motorcycle有一个私有成员布尔变量isElectricity,以及四个公共函数setType(bool)、getType()、ChangeType()和Horn()。ChangeType()可以为isElectricity赋一个相反的值,而Horn()可以输出一个字符串“嘟嘟嘟,嘟嘟嘟”。

Truck有一个私有成员变量load,以及四个公共成员函数构造函数Truck(float)、setLoad(float)、getLoad()和Horn()。对于类Truck, Horn()可以输出一个字符串" longlong, longlong "。

在main()函数中,分别为子类创建对象mm、tt,并通过引用Vehicle调用Horn()来演示面向对象编程的多态性。

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

//声明一个抽象类Vehicle,
//它包含私有变量numOfWheels和公共函数Vehicle(int)、Horn()、setNumOfWheels(int)和getNumOfWheels()。
class Vehicle
{
protected:
    int numOfWheels;//几轮
public:
    Vehicle(int n)
    {
        numOfWheels = n;
    }
    virtual void Horn() = 0; 
    virtual void setNumOfWheels(int) = 0;
    virtual int getNumOfWheels() = 0;

};

//子类Motorcycle和Truck通过公共继承从类Vehicle派生而来。
class Motorcycle :public Vehicle
{
private:
    bool isElectricity;
public:
    Motorcycle(int n = 2) :Vehicle(n) { isElectricity = false; };
    void setType(bool b) { isElectricity=b; }
    bool getType() { return isElectricity; }
    void  ChangeType()    { isElectricity =! isElectricity;}
    void setNumOfWheels(int n) { numOfWheels = n; }
    int getNumOfWheels() { return numOfWheels; }
    void Horn() { cout << "dududu, dududu" << endl; }
};

class Truck :public Vehicle
{
private:
    float load;
public:
    Truck(float load,int n=4):Vehicle(n) { this->load = load; }
    void setLoad(bool load) { this->load = load ; }
    bool getLoad() { return load; }
    void setNumOfWheels(int n) { numOfWheels = n; }
    int getNumOfWheels() { return numOfWheels; }
    void Horn() { cout << "longlong, longlong" << endl; }
};

int main()
{
    Motorcycle mm;
    mm.setNumOfWheels(2);
    mm.setType(true);

    Truck tt(12.0);
    tt.setNumOfWheels(4);

    Vehicle *v;
    v = &mm;
    v->Horn();
    v = &tt;
    v->Horn();   
    
    return 0;
}

原网站

版权声明
本文为[laocooon]所创,转载请带上原文链接,感谢
https://laocooon.blog.csdn.net/article/details/125529698