C++ 继承
继承
在 C++ 中,可以将属性和方法从一个类继承到另一个类。我们将 "继承概念" 分为两类:
- 子类(子类)- 从另一个类继承的类
- 超类(父类)- 从父类继承的类
要从类继承,请使用 extends
关键字。在下面的实例中,Car类
(子类)继承了 Vehicle
类(父类)的属性和方法
实例
#include <iostream>
#include <string>
using namespace std;
// Base class
class Vehicle {
public:
string brand = "Ford";
void honk() {
cout << "Tuut, tuut! \n" ;
}
};
// Derived class
class 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 class
class MyClass {
public:
void myFunction() {
cout << "Some content in parent class." ;
}
};
// Child class
class MyChild: public MyClass {
};
// Grandchild class
class MyGrandChild: public MyChild {
};
int main() {
MyGrandChild myObj;
myObj.myFunction();
return 0;
}
多重继承
一个类也可以使用逗号分隔的列表从多个基类派生:
#include <iostream>
using namespace std;
// Base class
class MyClass {
public:
void myFunction() {
cout << "Some content in parent class.\n" ;
}
};
// Another base class
class MyOtherClass {
public:
void myOtherFunction() {
cout << "Some content in another class.\n" ;
}
};
// Derived class
class 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 class
class Employee {
protected: // Protected access specifier
int salary;
};
// Derived class
class 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;
}