0

是否可以从另一个对象实例化对象在 UML 序列图中查看此 构造函数

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

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

4

3 回答 3

2

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

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

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

在这里,我已经做到了,以便在实例化ClassA时(调用它的构造函数)它会创建一个名为instance1的ClassB新实例。

于 2013-02-22T00:22:07.390 回答
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
    }
}

祝你好运!

于 2013-02-21T22:36:50.663 回答
0

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

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

A baseObject = new B();

这里的关系表示'B' IS 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>();  

希望这会有所帮助。

于 2013-02-21T22:42:50.450 回答