【问题标题】:Can an object contain its superclass?一个对象可以包含它的超类吗?
【发布时间】: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,而不是具体代码。

【问题讨论】:

  • 可以。这是否是一个好主意取决于您实际在做什么。
  • 例如,扩展InputStreamFilterInputStream 有一个引用另一个InputStream 的字段。
  • 为什么不应该被允许和接受。有时无法避免。例如,考虑一个IfStatement 对象,它必须继承 Statement包含两个Statement 对象。
  • hmmm,Object 是几乎所有东西的超类...并不总是直接的,但仍然...如果不允许它的子类有其他对象的字段......只是想

标签: java oop inheritance uml


【解决方案1】:

当然可以:

SubClass (B) 是 SuperClass (A),它还拥有 SuperClass 类型的自有财产 general(a;尽管在我的示例中是公开的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-22
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多