是否可以从另一个对象实例化对象在 UML 序列图中查看此 构造函数
这种情况在Java等编程语言中是否可能发生?
这种情况在 UML 等建模语言中是否可能?
是的,面向对象编程的整个概念依赖于能够创建其他对象的对象。
在 Java 中,我们通过调用构造函数来创建实例,例如为new ClassB()
我们实例化一个新的 ClassB 对象。如果我们想让 ClassA 实例化 ClassB,我们只需要让 ClassA 调用 ClassB 的构造函数。下面是我们在 Java 中的做法
public class ClassA{
public ClassA(){
ClassB instance1 = new ClassB();
}
}
在这里,我已经做到了,以便在实例化ClassA时(调用它的构造函数)它会创建一个名为instance1的ClassB新实例。
如果我明白你在问什么,是的,你可以通过继承或组合来做到这一点。
遗产:
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
}
}
祝你好运!
是的,这是 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>();
希望这会有所帮助。