継承では、サブクラスが作成されるとスーパークラスが作成されます。コンポジションでは、コーダーが望むときにオブジェクトが作成されます。
これは継承です。Child クラスが作成されると、子は親から継承されるため、親が作成されます。
class Parent {
//Some code
}
class Child extends Parent{
//Some code
}
これはコンポジションです。オブジェクトは、子クラスの作成時に作成されるのではなく、必要なときに作成されます。
class Parent{
//Some code
}
class Child{
private Parent parent = new Parent();
//Some code
}
この場合、Child クラスの作成時に Parent クラスも作成されます。以下は、子クラスの作成時にオブジェクトが作成されない構成の別の例です。
class Parent{
//Some code
}
class Child{
private Parent parent;
public Child()
{
}
public void createParent()
{
parent = new Parent();
}
}
createParent が呼び出されるまで親が作成されないことに注意してください。