C++中的继承是一种面向对象编程的重要特性,允许一个类(派生类/子类)使用另一个类(基类/父类)的成员和行为。继承提供了代码重用、层次结构和多态性的机制。
继承的语法,简单的描述如下
class A : public B;
A 类称为子类 或 派生类
B 类称为父类 或 基类
派生类中的成员,包含两大部分:
一类是从基类继承过来的,一类是自己增加的成员。
从基类继承过过来的表现其共性,而新增的成员体现了其个性。
继承方式一共有三种:
公共继承
保护继承
私有继承
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
}
下面图示就解释了上面的代码案例。
未完待续。。。。