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是错误的,因为,私有的方法与属性只可以在类中调用。

 

 

 

  通过上面的学习,相信大家对公有与私有的访问权限有了一个初步了解,但是,如何灵活地运用这个知识点呢?那么,我们就要通过下方的按钮进入到游戏中,然后,运用该知识点去完成任务,这样,才可以加深大家对该知识点的理解和运用,以及“尽快进入到编程的状态”

 

  要达到灵活运用,是需要通过不停地反复训练才可以做到,所以,不要停留在理论规则上面,快动起来吧!

 

 

(通过游戏模式学习与训练,需要在电脑上运行)

进入游戏学习与训练