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在武
器类中是保护属性,所以,不能在类外通过对象来访问。
}
通过上面的学习,相信大家对组合有了一个初步了解,但是,如何灵活地运用这个知识点呢?那么,我们就要通过下方的按钮进入到游戏中,然后,运用该知识点去完成任务,这样,才可以加深大家对该知识点的理解和运用,以及“尽快进入到编程的状态”。
要达到灵活运用,是需要通过不停地反复训练才可以做到,所以,不要停留在理论规则上面,快动起来吧!
(通过游戏模式学习与训练,需要在电脑上运行)