对象实例化另一个对象?

时间:2013-02-21 22:29:21

标签: java object instantiation uml

是否可以从另一个对象实例化对象 看这个  constructor in UML sequence diagram

这种情况在Java等编程语言中是否可行?

这种情况在UML等建模语言中是否可行?

3 个答案:

答案 0 :(得分:2)

是的,面向对象编程的整个概念取决于能够创建其他对象的对象。

在Java中,我们通过调用new ClassB()等构造函数来创建实例,该构造函数为我们实例化一个新的ClassB对象。如果我们想让ClassA实例化ClassB,我们只需要让ClassA调用ClassB的构造函数。以下是我们如何用Java实现它

public class ClassA{
    public ClassA(){
        ClassB instance1 = new ClassB();
    }
}

这里我已经做到这一点,当 ClassA 被实例化(调用它的构造函数)时,它会创建一个名为 instance1 ClassB 的新实例>

答案 1 :(得分:0)

如果我理解你的要求,是的,你可以通过继承或组合来做到这一点。

继承:

ClassB extends ClassA {
    public ClassB() {
        super();    // calls ClassA constructor
        // do more stuff
    }
}

成分:

ClassX {
    private ClassY y;
    public ClassX() {
        y = new ClassY();    // calls ClassY constructor
        // do more stuff
    }
}
祝你好运!

答案 2 :(得分:0)

是的,这是Java的重要组成部分,也是任何面向语言的对象。

如果有两个对象,A和B,B是A的子类,则可以使用B实例化A:

A baseObject = new B();

这里的关系表示'B'是A'A':意味着你有A的任何地方,你可以在它的位置实例化一个B,因为B是A的正确子类型。注意那么你仍然只能使用A的如果你这样使用它就接口。

使用列表时可以看到Java中的真实示例。 Java中的List类是从Collection派生的抽象容器类型。在这个例子中,List是我们的'A'类型。有许多不同类型的列表,例如LinkedList和ArrayList。 LinkedList和ArrayList是List的正确子类型,在此示例中为“B”类型。因此,您可以将List初始化为其任何子类型:

List<String> stringList = new ArrayList<String>();

List<String> stringList = new LinkedList<String>();  

希望这有一些帮助。