C++ 继承
继承
在 C++ 中,可以将属性和方法从一个类继承到另一个类。我们将 "继承概念" 分为两类:
- 子类(子类)- 从另一个类继承的类
- 超类(父类)- 从父类继承的类
要从类继承,请使用 extends 关键字。在下面的实例中,Car类(子类)继承了 Vehicle 类(父类)的属性和方法
实例
#include <iostream>#include <string>using namespace std;// Base classclass Vehicle {public:string brand = "Ford";void honk() {cout << "Tuut, tuut! \n" ;}};// Derived classclass Car: public Vehicle {public:string model = "Mustang";};int main() {Car myCar;myCar.honk();cout << myCar.brand + " " + myCar.model;return 0;}
为什么以及何时使用 "继承"?
- 它对代码的可重用性很有用:在创建新类时重用现有类的属性和方法。
多级继承
一个类也可以从一个类派生(这个类是从另一个类派生的)。
在下面的实例中,MyGrandChild 是从类 MyChild(从 MyClass 派生)派生的。
#include <iostream>using namespace std;// Parent classclass MyClass {public:void myFunction() {cout << "Some content in parent class." ;}};// Child classclass MyChild: public MyClass {};// Grandchild classclass MyGrandChild: public MyChild {};int main() {MyGrandChild myObj;myObj.myFunction();return 0;}
多重继承
一个类也可以使用逗号分隔的列表从多个基类派生:
#include <iostream>using namespace std;// Base classclass MyClass {public:void myFunction() {cout << "Some content in parent class.\n" ;}};// Another base classclass MyOtherClass {public:void myOtherFunction() {cout << "Some content in another class.\n" ;}};// Derived classclass MyChildClass: public MyClass, public MyOtherClass {};int main() {MyChildClass myObj;myObj.myFunction();myObj.myOtherFunction();return 0;}
访问修饰符
从 访问修饰符 章节中学习到 C++ 中有三种修饰符。到目前为止,我们只使用 public(类的成员可以从类外部访问)和 private(成员只能在类内部访问)。第三种修饰符 protected 类似于 private,但也可以在继承的类中访问它:
#include <iostream>using namespace std;// Base classclass Employee {protected: // Protected access specifierint salary;};// Derived classclass Programmer: public Employee {public:int bonus;void setSalary(int s) {salary = s;}int getSalary() {return salary;}};int main() {Programmer myObj;myObj.setSalary(50000);myObj.bonus = 15000;cout << "Salary: " << myObj.getSalary() << "\n";cout << "Bonus: " << myObj.bonus << "\n";return 0;}