0
点赞
收藏
分享

微信扫一扫

C++--三种继承方式

以沫的窝 2022-03-12 阅读 203

继承方式

  • 继承方式分为publicprotectedprivate三种
  • 三种继承方式都不能继承到父类的private属性
    • public继承:父类的public&&protected属性继承到子类不发生变化,仍然是public&&protected
    • protected继承:父类的public&&protected属性继承到子类都变成了protected
    • private继承:父类的public&&protected属性继承到子类都变成了private
//继承方式
//继承方式分为public、protected、private三种
//三种继承方式都不能继承到父类的私有属性
//public继承:父类的public&&protected属性继承到子类不发生变化,仍然是public&&protected
//protected继承:父类的public&&protected属性继承到子类都变成了protected
//private继承:父类的public&&protected属性继承到子类都变成了private
class Father
{
public:
	int a;
protected:
	int b;
private:
	int c;
};
//public继承
class Son_public : public Father
{
public:
	void function()
	{
		a = 100;		//public
		b = 100;		//protected
		//c = 100;		//属性c不可以访问
	}
};
//创建子类对象测试类外能否修改父类属性
void test1()
{
	Son_public son;
	son.a = 100;
	//son.b = 100;		//不可以修改,因为b属性从父类继承过来是protect,不可以类外直接修改属性值
}
//protected继承
class Son_protected : protected Father
{
public:
	void function()
	{
		a = 100;		//protected
		b = 100;		//protected
		//c = 100;		//private属性不能够继承
	}
};
void test2()
{
	Son_protected son;
	//son.a = 100;		//不可以修改,因为a属性从父类通过protected继承方式继承到子类变成了protected
	//son.b = 100;		//不可以修改,因为b属性从父类通过protected继承方式继承到子类变成了protected
}
//private继承
class Son_private : private Father
{
public:
	void function()
	{
		a = 100;		//变为private属性
		b = 100;		//变为private属性
		//c = 100;		//private属性不能被继承
	}
};
void test3()
{
	Son_private son;
	//son.a = 100;		//不可修改
	//son.b = 100;		//不可修改
}
//Son_private_son类继承Son_private类
class Son_private_son : public Son_private
{
public:
	void function()
	{
		//a = 100;		//父类中a属性已经变为private属性了,不能被继承
		//b = 100;		//父类中b属性已经变为private属性了,不能被继承
	}
};

继承方式的大致关系如图所示
在这里插入图片描述

举报

相关推荐

0 条评论