Z
ZHANK

继承

public/protected/private 继承、重写、final/override、多继承

继承

C++ 支持三种继承方式(public/protected/private),加上多继承——灵活但需要理解规则。

学完本章你将: 掌握 public 继承、重写、final/override、多继承。


基本继承

cpp
#include <iostream>
#include <string>

// 基类
class Animal {
protected:
    std::string name;
public:
    Animal(const std::string &n) : name(n) { }
    void eat() { std::cout << name << " 在吃东西\n"; }
};

// 派生类
class Dog : public Animal {  // public 继承
public:
    Dog(const std::string &n) : Animal(n) { }  // 调用基类构造
    void bark() { std::cout << name << " 汪汪叫\n"; }
};

int main() {
    Dog d("旺财");
    d.eat();   // 继承自 Animal
    d.bark();  // Dog 自己的方法
    return 0;
}

override 和 final

cpp
class Base {
public:
    virtual void print() const { }
    virtual void show() const { }
};

class Derived : public Base {
public:
    void print() const override { }  // ✅ 显式标注"重写"
    // void pritn() const override { } // ❌ 拼写错误——编译报错!
    
    void show() const final { }       // 禁止子类再重写
};

// class More : public Derived {
//     void show() const { }   // ❌ 被 final 禁止
// };

💡 override 是编译器的安全带——如果你拼错了方法名或参数不匹配,编译器直接报错。