组合:一个类通过将其他类的对象加入自己的类中,从而使用其资源
【1】 继承(is a)仅适用于有共同点的父类与子类,组合(has a/is a part of)不要求类与类之间有直接联系
【2】组合体现了一种包含的逻辑关系,诸多小类相互调用组合成一个大类,在构建一个大类时,我们可以把大类分解成很多小类(相当于产品与零件的关系),有利于多人合作和代码的复用
【3】一个类在使用其他类时,可以以其他类为参数通过(对象名+.)调用,也可以以其他类的数据成员为参数,使用其构造方法调用
【4】在使用组合时,
切记不要将要组合的数据成员或方法设置为private
,因为private的数据只能在该类自己内部使用,无法通过
(对象名+.)在其他类中被调用
//类的组合
class
Point
{
// private
int
x1;无法在Line中通过a.x1来调用
// private
int
x2;
int
x
;
int
y
;
public
Point
(
int
x
,
int
y
)
{
this
.
x
=
x
;
this
.
y
=
y
;
}
}
class
Line
{
Point
p1
,
p2
;
Line
(
Point
a
,
Point
b
)
{
p1
=
new
Point
(
a
.
x
,
a
.
y
)
;
p2
=
new
Point
(
b
.
x
,
b
.
y
)
;
}
Line
(
int
x1
,
int
y1
,
int
x2
,
int
y2
){
p1
=
new
Point
(
x1
,
y1
)
;
p2
=
new
Point
(
x2
,
y2
)
;
}
}