1006继承02

71 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

1.前言

继承的语法:class 子类 : 继承方式 父类

继承方式一共有三种:

  • 公共继承
  • 保护继承
  • 私有继承

不管是什么继承,父类中私有内容子类中均不可以访问;当公共继承时,父类中的公共属性和保护属性的内容在子类均不变属性;当保护继承时,父类中的公共属性和保护属性的内容在子类均变成保护属性;当私有继承时,父类中的公共属性和保护属性的内容在子类均变成私有属性;

2.公共继承

class fat
{
public:
	int a;
protected:
	int b;
private:
	int c;
};

//公共继承
class Son :public fat
{
public:
	void func()
	{
		a; //可访问 public权限
		b; //可访问 protected权限
	        c; //不可访问
	}
};

图一

1658991421062.png

图二

1658991464851.png 结论

父类中的公开权限成员,到子类中依然是公告权限; 父类中的保护权限成员,到子类中依然是保护权限; 父类中的私有权限成员,子类访问不到; 保护权限内容,类内可以访问,类外不可以访问。

3.保护继承

class Son :protected fat
{
public:
	void func()
	{
		a; 
		b; 
	        c;  
	}
};

void test()
{
	Son son;
	son.a; 
	son.b;
	son.c;
}

图一

1658992026940.png

图二

1658992039527.png

结论

父类公共成员,到子类变成保护成员; 父类保护成员,到子类不变; 父类私有成员,子类访问不到; 所以类外都不可以访问。

4.私有继承

class Son :private fat
{
public:
	void func()
	{
		a; 
		b; 
	        c; 
	}
};
class grason :public Son
{
public:
	void func() {
		a;
		b;
		c;
	}
};
void test()
{
	Son son;
	son.a;
	son.b;
	son.c;
}

图一

1658992467374.png

图二

1658992492616.png

结论

父类公共成员,到子类变成私有成员; 父类保护成员,到子类变成私有成员; 父类私有成员,子类访问不到;当子类的子类以公共方式继承,同样也访问不到父类公告和保护属性的成员。 所以类外都不可以访问。