【发布时间】:2018-10-10 11:03:00
【问题描述】:
例如(在 Java 中,但问题是关于每种 oo 语言):
public class A { public int i;}
public class B extends A {
private A a;
B(A aa) { a = aa;}
}
public class C {
public static void main(String[] args) {
A a1 = new A();
B b1 = new B(a1);
B b2 = new B(b1);
}
}
正如我所见,它在 Java 中工作,但我不知道它是否真的被允许或应该避免。我需要它来制作 UML,而不是具体代码。
【问题讨论】:
-
可以。这是否是一个好主意取决于您实际在做什么。
-
例如,扩展
InputStream的FilterInputStream有一个引用另一个InputStream的字段。 -
为什么不应该被允许和接受。有时无法避免。例如,考虑一个
IfStatement对象,它必须继承Statement和包含两个Statement对象。 -
hmmm,
Object是几乎所有东西的超类...并不总是直接的,但仍然...如果不允许它的子类有其他对象的字段......只是想
标签: java oop inheritance uml