📅  最后修改于: 2023-12-03 14:39:38.707000             🧑  作者: Mango
在面向对象编程中,继承(Inheritance)是一种允许一个新类(派生类)基于已有类(基类或父类)的属性和方法来创建的机制。继承使得派生类能够重用基类的代码而不需要重新编写,从而提高了程序的复用性和可读性。
在 C++ 中,使用 :
符号来表示一个类从另一个类继承,例如:
class Base {
public:
int getNum() { return num; }
private:
int num = 0;
};
class Derived: public Base {
public:
void setNum(int n) { num = n; }
};
在上面的例子中,Derived
类从 Base
类继承。关键字 public
表明继承方式是公有的,即在 Derived
类中可以访问 Base
类中的公有成员和保护成员。
在 C++ 中,继承方式可以是公有、保护或私有的。这个访问控制限制了派生类访问基类的成员的方式。例如:
class A { // 默认为私有继承
int a;
protected:
int b;
public:
int c;
};
class B1 : public A {}; // 公有继承
class B2 : protected A {}; // 保护继承
class B3 : private A {}; // 私有继承
int main() {
B1 b1;
b1.a = 1; // 错误,a 是私有成员
b1.b = 2; // 正确,b 是保护成员
b1.c = 3; // 正确,c 是公有成员
B2 b2;
b2.a = 1; // 错误,a 是私有成员
b2.b = 2; // 正确,b 是保护成员
b2.c = 3; // 错误,c 是公有成员
B3 b3;
b3.a = 1; // 错误,a 是私有成员
b3.b = 2; // 错误,b 是保护成员
b3.c = 3; // 错误,c 是公有成员
return 0;
}
在 C++ 中,一个类可以从多个类继承,这被称为多重继承。例如:
class A {
public:
void funcA() {}
};
class B {
public:
void funcB() {}
};
class C : public A, public B {
public:
void funcC() {}
};
在上面的例子中,C
类从 A
和 B
类分别公有继承了一个函数。可以用以下方式来调用这些函数:
C c;
c.funcA();
c.funcB();
c.funcC();
继承是面向对象编程中比较重要的一个概念,它使得代码的复用性和可读性都得到了提高。在 C++ 中,使用 :
符号来表示一个类从另一个类继承,可以使用公有、保护或私有三种方式来限制派生类对基类成员的访问。多重继承是 C++ 中比较特殊的一个概念,它使得一个类可以从多个类中继承成员。