4.6 继承
C++中的继承是一种面向对象编程的重要特性,允许一个类(派生类/子类)使用另一个类(基类/父类)的成员和行为。继承提供了代码重用、层次结构和多态性的机制。
继承的语法,简单的描述如下
class A : public B;
A 类称为子类 或 派生类
B 类称为父类 或 基类
派生类中的成员,包含两大部分:
一类是从基类继承过来的,一类是自己增加的成员。
从基类继承过过来的表现其共性,而新增的成员体现了其个性。
4.6.2 继承方式
继承方式一共有三种:
公共继承
保护继承
私有继承
1.公有继承(Public Inheritance):
-
使用
public
关键字,基类的公有成员和保护成员在派生类中仍然是公有和保护的,基类的私有成员在派生类中不可访问。 -
示例:
class A { public:int m_a; protected:int m_b; private:int m_c; };class B : public A {//在B类中A类中的成员属性不变。在B类中可以访问A类的public和protected成员,// 但不能访问A类中的private成员 public:void fun(){m_a; //可访问 public权限m_b; //可访问 protected权限//m_c; //不可访问 }};
2.私有继承(Private Inheritance):
使用
private
关键字,派生类的所有成员在派生类中都变为私有的,基类的私有成员在派生类中不可访问。示例:class A { public:int m_a; protected:int m_b; private:int m_c; };class B : private A {// 在B类中,A类中的所有成员都变为private。在B类中可以访问A类的public和protected成员,// 但不能访问A类中的private成员 public: void func() {m_a; //可访问 private权限m_b; //可访问 private权限//m_c; //不可访问 } };
保护继承(Protected Inheritance):
-
使用
protected
关键字,派生类的公有和保护成员在派生类中仍然是保护的,基类的私有成员在派生类中不可访问。示例代码:
class A { public:int m_a; protected:int m_b; private:int m_c; };class B : protected A {// 在B类中,A类中的所有成员都变为protected。在B类中可以访问A类的public和protected成员,// 但不能访问A类中的private成员 public:void fun(){m_a; //可访问 protected权限m_b; //可访问 protected权限//m_c; //不可访问 } };void fun1(){//对于B类从A类中使用protected继承,A类中的成员属性都变为protected属性A a;a.m_a;//不能访问,因为属性为protected }
下面图示就解释了上面的代码案例。
未完待续。。。。