C++ 组合

 

 

  接下来,我们准备为大家介绍"组合"

 

   组合——在一个类中,以另一个类的对象作为属性,就称为组合。

 

   举个例子:在一个太空射击的游戏中,在一架飞机类里面,我们可以通过一个武器类定义对象来作为飞机类中的属性,因为,飞机是需要武器才能进行攻击。

 

  组合的特性:

    (1)类中的公有属性或方法,可以在组合后的类内访问,或类外通过对象来访问。

    (2)类中的私有或保护的属性与方法,不可以在组合后的类中访问,或类外通过对象来访问

 

 

 

  接下来,我们结合例子作进一步的学习

 

   例子:

    class Weapon       //定了一个描述武器的类Weapon

    {

      private:

        int x;          //私有属性x

      protected:

        int y;          //保护属性y

      public:

        int Type;       //武器的类型

 

        Weapon()

        {

          Type = 0;   

          x = 10;     //武器的X位置为10

          y = 50;     //武器的Y位置为50

        }

 

        ~Weapon()

        {

         

        }

    }

 

    class Plane       //定了一个描述飞机的类Plane

    {

      public:

        int  x;       //飞机位置X

        int  y;       //飞机位置Y

 

        Weapon  wp;  //(组合)通过武器类定义了对象wp作为属性

 

        Plane()

        {

          x = 20;

          y = 20;

 

          wp.x = 1;  //错误,通过属性wp不可以访问武器类中的私有属性x

        

         wp.y = 2;  //错误,通过属性wp不可以访问武器类中的保护属性y

        }

 

        ~Plane()

        {

         

        }

    }

 

   

  void main()

  {

    Plane p1;  //定义飞机对象p1

 

    p1.wp.Type = 1;  //正确,通过飞机对象p1调用属性wp,而wp是武器的对象,所以,还可以

                调用武器类中的公有属性Type并对其赋值为1。

 

    p1.wp.x = 1;  //错误,通过飞机对象p1调用属性wp,而wp是武器的对象,但是,x在武

              器类中是私有属性,所以,不能在类外通过对象来访问。

 

    p1.wp.y = 2;  //错误,通过飞机对象p1调用属性wp,而wp是武器的对象,但是,x在武

              器类中是保护属性,所以,不能在类外通过对象来访问。

  }

 

 

 

 

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

 

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

 

 

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

进入游戏学习与训练