C++中类的继承的语法如下:
首先定义一个基类(父类),然后定义派生类(子类)继承基类,语法如下
class 派生类名:访问控制符 基类名
访问控制符包括以下三种:
1>public:修饰的成员变量或方法,在类的内部和类的外部都能被访问
2>protected:修饰的成员变量或方法,只能在类的内部或者继承的子类中访问,不能在类的外部访问
3>private:修饰的成员变量或方法,只能在类的内部访问,不能在类的外部访问
直接贴代码看:
#include <iostream>
using namespace std;
class Parent
{
public:
int a;
void print()
{
cout << "Parent a = " << a << endl;
}
};
class Child:public Parent //访问控制符为public,继承基类的属性和方法
{
public:
int b;
};
int main(void)
{
Child c1;
c1.a = 10;
c1.print();
return 0;
}
运行结果如下:
首先,基类Parent的内部定义了public的属性a和方法print,派生类通过public访问控制符继承基类的属性和方法,那么继承下来的父类属性和方法可以在类的内部和外部都能访问,所以在main函数中对a赋值,并且print出a的值。
下面用protected访问控制符继承基类,再看看结果:
class Child:protected Parent
{
public:
int b;
};
int main(void)
{
Child c1;
c1.a = 10; //error
c1.print(); //error
return 0;
}
由于,派生类通过protected继承基类的public属性和方法,这时只能在基类的内部或者派生类的内部访问,而不能在类的外部访问,所以上面的c1.a=10,和c1.print()就会编译不通过,报如下错误:
类似的private访问控制符也类似。
C++中类的继承方式列出如下图:
1>派生类public继承下来基类的属性和方法,属性保持不变
2>派生类protected继承下来基类的属性和方法,public和protected变为protected,private的还是private类型
3>派生类private继承袭来基类的属性和方法,都是private的。
C++类的继承方式(public、protected、private)会影响子类的对外访问属性
要判断一句话能否被访问:
1>看调用语句是写在子类的内部还是外部
2>看子类如何从父类继承(public、protected、private)
3>看父类中的属性和方法的访问级别(public、protected、private)