正如标题所说,两者的含义都没有。
答案 0 :(得分:2)
继承表示is-a
关系,而组合表达两个类之间的has-a
关系。
合成的一个例子是多边形。它有一个有序的点序列。用C ++术语:
struct Polygon {
std::vector<Point> points;
};
虽然logic_error
是exception
:
struct logic_error : public exception {
};
答案 1 :(得分:1)
正如pmr所指出的,遗产是is-a
关系,组合是has-a
关系。
组合通常用于包装类和表达彼此包含的类之间的关系。
继承用于多态,您可以在其中拥有基类,并且希望扩展或更改其功能。
答案 2 :(得分:1)
只是谷歌继承与组合,你会得到很多结果 以java为例
public class Banana extends Fruit{ //<---Inheritance Banana is-a Fruit
private Peel bananaPeel; //<--Composition banana has a Peel
public Peel getPeel(){
return bananaPeel;
}
}
答案 3 :(得分:1)
继承意味着从父级继承内容。 例如,你可以继承你母亲的眼睛或继承你父亲的身材。
这意味着从父类派生属性,特征和行为。所以你可以使用parent.walk(),parent.sleep(),parent.sleep()等等。
容器或组合有点难以解释。
或许车子有刹车。这辆车由刹车组成。但制动器并非继承制动器......不同的概念。我知道非常奇怪的解释..但是我猜我能做多少。
我们来看看这段代码:
class Parent
{
public :
void sleep() ; void eat() ; void walk() ;
string eyeColor; int height ;
};
class Child: public Parent
{
}
因此Child类可以继承Parent的功能和属性,但当然它可能具有母亲或父亲的眼睛颜色。即使孩子的属性不同,它仍然可以做父母可以做的任何事情。
现在作文是另一回事。孩子可以有玩具或父母可以有孩子。所以我能做到:
class Toy
{
string model ;
};
class Child
{
Toy transformersToy ;
};
所以Child现在拥有变形金刚玩具......但Child是否继承了transformersToy.model属性?不,因为它不是继承。
答案 4 :(得分:0)
继承是类之间的关系,containerhip是类实例之间的关系。
答案 5 :(得分:0)
继承是动态多态,现在将其功能更改为代码重用技术。但组成是确保实施能力的技术。
答案 6 :(得分:0)
我看到的一个主要观点是对象的所有权。继承不拥有/不提供任何东西,它只是赋予了基类的特征。而Composition使所有者拥有创建的对象。
在第一个示例中,多边形具有点矢量。因此,多边形在其中拥有/包含点。 在继承时,您可以拥有/使用/扩展基类的现有特征。