基本概念

在C++中,类的继承关系是通过派生类从一个或多个基类继承特性和行为来实现的。派生类继承了基类的成员变量和成员函数,并且可以在派生类中添加新的数据成员和成员函数。派生类可以继续被其他类继承,形成多层次的继承关系。基类也称为父类或超类,派生类也称为子类。

单一继承

单一继承是指派生类只能从一个基类继承,C++不支持多继承。下面以一个简单的例子来说明单一继承的概念。

class Fruit {
protected:
    int weight;
public:
    Fruit(int w) : weight(w) {}
    virtual void eat() = 0;  // 抽象方法,表示水果的吃的行为
};

class Apple : public Fruit {
public:
    Apple(int w) : Fruit(w) {}
    void eat() {
        cout << "吃苹果,重量为:" << weight << "g" << endl;
    }
};

class Orange : public Fruit {
public:
    Orange(int w) : Fruit(w) {}
    void eat() {
        cout << "吃橙子,重量为:" << weight << "g" << endl;
    }
};

在上面的例子中,Fruit类是基类,Apple类是派生类,Apple继承了Fruit的成员变量和虚函数eat()。同样,Orange类也是派生类,继承了Fruit的成员变量和eat()函数。通过单一继承,Apple类和Orange类都具备了Fruit类的特性和行为,同时又可以在派生类中进行定制。

多层次继承

多层次继承是指派生类从一个基类继承,并且派生类又被其他类继承的关系。下面以一个汽车类的继承关系来说明多层次继承的概念。

class Vehicle {
protected:
    int speed;
public:
    Vehicle(int s) : speed(s) {}
    void run() {
        cout << "车辆以" << speed << "km/h的速度行驶" << endl;
    }
};

class Car : public Vehicle {
protected:
    int seatNum;
public:
    Car(int s, int n) : Vehicle(s), seatNum(n) {}
    void drive() {
        cout << "汽车有" << seatNum << "个座位" << endl;
    }
};

class Sedan : public Car {
public:
    Sedan(int s, int n) : Car(s, n) {}
    void load() {
        cout << "轿车可以装载4人" << endl;
    }
};

在上面的例子中,Vehicle类是基类,Car类是Vehicle的派生类,Sedan类是Car类的派生类。Sedan类继承了Vehicle和Car的成员变量和成员函数。通过多层次继承,Sedan类既具备了Vehicle类的特性和行为,也具备了Car类的特性和行为。