C++day06 继承的关系

大家好,我是阿林。今天我分享的关于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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值