大家好,我是阿林。今天我分享的关于c++中继承的关系。
在学c++的继承的时候你是否会因为继承的关系而困扰呢。希望这篇博客对你有所帮助。
首先我们理清继承的关系,就是看继承父类的元素是否能在子类中访问、在类外例如main()中直接访问。
我总结了三个步骤:
判断某一句话,能否被访问
(1) 看调用语句,这句话写在子类的内部、外部
(2) 看子类如何从父类继承(public、private、protected)
(3) 看父类中的访问级别(public、private、protected)
我举个例子,并做一个形象的说明。
class Parent
{
public:
int a; //相当于老爹的名字 这个元素在子类是可以访问的。当能否能在外部访问就要看子类的继 承方式了,如果子类将老爹的名字保护起来protected 那就只能是他的家族使用,如果是 私有继承private,那就只能它自己使用,如果是公开继承public那么就是大家都可以使用
protected:
int b;//老爹的密码 老爹的密码是可以被儿子使用的但不可以在外界使用。
private:
int c;//老爹的情人 儿子是不可以使用老爹的情人,所以儿子是没有访问的权利的。
public:
void printT()
{
cout << "printT" << endl;
}
};
我举的这个例子是比较通俗易懂,现在我们来看看官方的话。
//public 修饰成员变量 方法 在父类的内部 子类的内外外部都能使用
//protectd: 修饰的成员变量方法,在父类的内部,在继承
//private: 修饰的成员变量的方法 只能在父类的内部使用 不能在父类的外部使用
//protected 关键字 修饰的成员变量和成员函数是为了在家族中使用的。,是为了继承
最后我们用代码去测试一下效果。看那些可以访问,那些不可以访问
#include <iostream>
using namespace std;
//这是统一用public的方式去继承。
//public 修饰成员变量 方法 在父类的内部 子类的内外外部都能使用
//protectd: 修饰的成员变量方法,在父类的内部,在继承
//private: 修饰的成员变量的方法 只能在父类的内部使用 不能在父类的外部使用
//protected 关键字 修饰的成员变量和成员函数是为了在家族中使用的。,是为了继承
class Parent
{
public:
int a; //老爹的名字
protected:
int b;//老爹的密码
private:
int c;//老爹的情人
public:
void printT()
{
cout << "printT" << endl;
}
};
//公有继承
class Child :public Parent
{
public:
void usrVar()
{
a = 0;//ok
b = 0;//ok
//c = 0;//err
}
protected:
private:
};
//私有继承
class Child2 :private Parent
{
public:
void usrVar()
{
a = 0;//ok
b = 0;//ok
//c = 0;//err
}
protected:
private:
};
//保护继承
class Child3 :protected Parent
{
public:
void usrVar()
{
a = 0;//ok
b = 0;//ok //b在这里 写在了子类Child3的内部 2看为protect 3 密码===》protected
//c = 0;//err
}
protected:
private:
};
/*
C++的继承方式(public、private、protected)会影响子类的对外访问属性
判断某一句话,能否被访问
(1) 看调用语句,这句话写在子类的内部、外部
(2) 看子类如何从父类继承(public、private、protected)
(3) 看父类中的访问级别(public、private、protected)
*/
int main0201()
{
Parent t1, t2;
t1.a = 10; //ok
//t1.b = 20;//err
//t2.c = 30;//err
system("pause");
return 0;
}
int main0202()
{
Child3 c3;
c3.a = 10;//err
c3.b = 20;//err
c3.c = 30;//err
system("pause");
return 0;
}