📜  C ++ |继承|问题10(1)

📅  最后修改于: 2023-12-03 14:39:38.688000             🧑  作者: Mango

C++ |继承|问题10

在C++中,继承是实现面向对象编程中重要的概念之一。它允许我们定义一个类,该类具有现有类的属性和方法,同时还可以添加其他属性和方法。

类的继承

类的继承定义了一个新的类,该类具有一个或多个现有类的所有特征和行为。新类被称为派生类,而现有类被称为基类。

下面是一个简单的示例,演示如何使用继承来定义两个类:

class Animal {
public:
    void eat() {
        cout << "I can eat." << endl;
    }
};

class Dog : public Animal {
public:
    void bark() {
        cout << "Woof!" << endl;
    }
};

在此示例中,我们定义了两个类Animal和Dog。Dog是Animal的一个派生类。Dog继承了Animal的所有特征和行为,并添加了自己的方法bark()。

现在我们可以创建一个Dog类的对象并调用它的方法:

Dog myDog;
myDog.eat();
myDog.bark();

输出将是:

I can eat.
Woof!
访问控制

在C++中,我们可以控制派生类对基类成员的访问权限。通过使用public、private和protected这三个访问控制修饰符,我们可以在派生类中控制对基类成员的访问权限。

默认情况下,如果没有明确指定修饰符,C++将使用private修饰符。这意味着如果我们没有明确指定访问控制修饰符,派生类将不能直接访问基类的成员。

下面是一个示例,演示如何使用访问控制修饰符来控制派生类对基类成员的访问权限:

class Animal {
public:
    void eat() {
        cout << "I can eat." << endl;
    }

protected:
    void move() {
        cout << "I can move." << endl;
    }

private:
    void sleep() {
        cout << "I am sleeping." << endl;
    }
};

class Dog : public Animal {
public:
    void bark() {
        move();
        cout << "Woof!" << endl;
    }
};

在此示例中,Animal类的成员被指定为public、protected或private。Dog类是Animal类的一个派生类,它可以访问Animal类的public和protected成员,但不能访问Animal类的private成员。

多重继承

多重继承是指一个派生类同时为多个基类的子类。 C++支持多重继承,使得一个类可以具有多个父类的特征和行为。

下面是一个简单的示例,演示如何使用多重继承:

class Vehicle {
public:
    void drive() {
        cout << "I can drive." << endl;
    }
};

class Plane {
public:
    void fly() {
        cout << "I can fly." << endl;
    }
};

class FlyingCar : public Vehicle, public Plane {
public:
    void start() {
        drive();
        fly();
        cout << "I can start as both Vehicle and Plane." << endl;
    }
};

在此示例中,我们定义了三个类,Vehicle、Plane和FlyingCar。 FlyingCar是Vehicle和Plane的子类,它同时具有Vehicle和Plane的特征和行为。FlyingCar的start()方法演示了如何使用Vehicle和Plane的方法。

现在我们可以创建一个FlyingCar对象并调用它的方法:

FlyingCar myFlyingCar;
myFlyingCar.start();

输出将是:

I can drive.
I can fly.
I can start as both Vehicle and Plane.
总结

继承是C++编程中的重要概念之一,它允许我们定义一个类,该类具有现有类的属性和方法,同时还可以添加其他属性和方法。在C ++中使用访问控制修饰符,我们可以控制派生类对基类成员的访问权限。C++还支持多重继承,使得一个类可以具有多个父类的特征和行为。