1

我已经提取了继承和组合之间的以下差异。我想知道后端对象创建延迟是什么意思?请找出下面的区别。

组合允许您延迟后端对象的创建,直到(除非)需要它们,以及在前端对象的整个生命周期内动态更改后端对象。通过继承,您可以在创建子类后立即在子类对象图像中获得超类的图像,并且在子类的整个生命周期中它仍然是子类对象的一部分

4

4 回答 4

8

在继承中,创建子类时创建超类。在 Composition 中,对象是在编码人员需要时创建的。

这是继承,当创建子类时创建父类,因为子类继承自父类。

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 之前如何创建父级。

于 2010-07-02T17:33:29.727 回答
1

这也意味着父级的封装没有被破坏。子类化将父类的数据暴露给子类,从而破坏了封装性。组合允许对象封装持久化,并且两个对象可以继续分开管理,从而改变一个类的数据不会影响另一个类的数据。

于 2011-12-21T20:48:00.217 回答
1

这意味着在有人实际调用使用该对象的方法之前,不必创建您的类封装的对象。

于 2010-07-02T17:23:26.417 回答
0

简单来说,Composition意味着 HAS-A 关系,而Inheritance是 IS-A 关系。

例如,鸡是鸟,有喙。所以下面的代码片段展示了它是如何工作的:

/*
* Parent class for Chicken.
*/
class Bird {
    ...
    //code
}  

class Beak {
    ...
    //code
} 

/* 
* As Chicken is a bird so it extends the Bird class. 
*/
class Chicken extends Bird { 

      private Beak beak; // Chicken has a beak so, Chicken class has an instance of Beak class. 
}
于 2019-04-07T06:24:03.170 回答