C++ 公有与私有访问权限
在前面学习类与继承的过程中,我们都接触过公有与私有这两种访问权限,但是,我们一直都没有结合代码为大家进行过详细介绍,所以,在接下来的时间里面,我们将结合代码与前面学过的知识,为大家详细介绍一下这两种访问权限。
首先,我们介绍一下公有的访问权限,它的关键是public,而这种访问权限在前面学习的过程中我们已经接触并使用过,而它设置的属性或方法都可以在类中或类外进行访问。
如果在类中进行访问,就可以在类中的方法实现的过程中去访问公有的属性或方法,而在前面学习的过程中,我们就多次通过代码在类中的构造函数里面访问公有的属性,并对它们进行赋值。
如果在类外进行访问,就可以通过对象去调用属性或方法,而在前面学习的过程,我们也曾经通过代码定义了“角色”对象去调用相应的属性进行设置,并调用相应的方法去移动“角色”。
接下来,我们再来介绍私有的访问权限,而它的关键字是private,而私有的权限在前面整个学习中我们都没有接触或使用过。
首先,通过私有权限设置的属性或方法只可以在类中被访问,而不能在类外被访问,同时,也不能在继承的类中被访问。也就是说,私有访问权限的属性与方法都不可以通过对象来调用,同时,也不可以在继承的类中去调用。
接下来,我们就结合例子来说明公有与私有的访问权限。
例子1:
Class DongWu //动物类
{
private:
int Leg; //腿
int Tail; //尾
int x; //移动的距离
void Attack(); //攻击的方法
public:
int head; //头
int body; //身
DongWu() //构造函数
{
head = 1;
body = 1;
Leg = 4;
Tail = 1;
}
void MX(); //移动的方法
};
void Dongwu::MX()
{
x=x+1; //MX是类中的方法,可以防问私有属性x
body = 1; //MX是类中的方法,可以防问公有属性body
Attack(); //Attack是私有的方法,但可以在类中的方法中调用
}
void Dongwu::Attack()
{
x=x+1; //Attack是类中的方法,可以防问私有属性x
body = 1; //Attack是类中的方法,可以防问公有属性body
}
DongWu HZ; //定义一只猴子对象
HZ.head = 1; //正确,head属性是公有访问权限可以在类外通过对象访问
HZ.MX(); //正确,方法MX是公有访问权限,所以,可以在类外通过对象调用来访问
HZ.Leg = 4; //错误,Leg属性是私有访问权限不可以在类外通过对象访问
HZ.Attack(); //错误,方法Attack是私有访问权限,所以,不可以在类外通过对象调用来访问
例子1分析:
(1)例子中定义了一个“动物类”,在类中通过私有权限的关键字private设置了属性Leg,Tail,以及x,另外,还定义了私有的方法Attack。
(2)在“动物类”中,还通过公有权限的关键字public设置了属性head和body,另外,还定义了公有的方法MX。
(3)无论公有还是私自的属性都可以在类中访问,所以,在构造函数中就可以访问私有和公有的属性,包括head,body,Leg和Tail这4个属性。
(4)类中定义的私有方法Attack与公有方法MX的主体部分都属于类内,所以,无论私有还是公有的属性与方法都可以在方法的主体部分中调用,所以,在MX方法的主体部分中就调用了属性x与body,以及调用了私有方法Attack,而在Attack方法的主体部分中就调用了属性x与body。
(5)在类外,定义了猴子对象HZ,并调用了公有的属性head,以及调用了公有的方法MX
(6)通过猴子对象HZ调用私有的属性Leg与私有的方法Attack是错误的,因为,私有的方法与属性只可以在类中调用。
通过上面的学习,相信大家对公有与私有的访问权限有了一个初步了解,但是,如何灵活地运用这个知识点呢?那么,我们就要通过下方的按钮进入到游戏中,然后,运用该知识点去完成任务,这样,才可以加深大家对该知识点的理解和运用,以及“尽快进入到编程的状态”。
要达到灵活运用,是需要通过不停地反复训练才可以做到,所以,不要停留在理论规则上面,快动起来吧!
(通过游戏模式学习与训练,需要在电脑上运行)