C++继承:公有、私有、保护:
公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。
1. 公有继承(public)
公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。
2. 私有继承(private)
私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。
3. 保护继承(protected)
保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。
三种继承方式的定义模式为:
1. 公有继承:Class A: public B
2. 私有继承:Class A: private B
3. 保护继承:Class A: protect B
A为派生类(父类),B为基类(子类)
下面的例子很详细地阐述了上述内容:
class A //父类
{
private:
int privatedateA;
protected:
int protecteddateA;
public:
int publicdateA;
};
//----------------------------------------------------------------
class B :public A //基类A的派生类B(共有继承)
{
public:
void funct()
{
int b;
b=privatedateA; //Error:基类中私有成员在派生类中是不可见的
b=protecteddateA; //OK:基类的保护成员在派生类中为保护成员
b=publicdateA; //OK:基类的公共成员在派生类中为公共成员
}
};
//------------------------------------------------------------------
class C :private A //基类A的派生类C(私有继承)
{
public:
void funct()
{
int c;
c=privatedateA; //Error:基类中私有成员在派生类中是不可见的
c=protecteddateA; //OK:基类的保护成员在派生类中为私有成员
c=publicdateA; //OK:基类的公共成员在派生类中为私有成员
}
};
//-------------------------------------------------------------------
class D :protected A //基类A的派生类D(保护继承)
{
public:
void funct()
{
int d;
d=privatedateA; //Error:基类中私有成员在派生类中是不可见的
d=protecteddateA; //OK:基类的保护成员在派生类中为保护成员
d=publicdateA; //OK:基类的公共成员在派生类中为保护成员
}
};