Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对象可以包含其超类吗?_Java_Oop_Inheritance_Uml - Fatal编程技术网

Java 对象可以包含其超类吗?

Java 对象可以包含其超类吗?,java,oop,inheritance,uml,Java,Oop,Inheritance,Uml,例如(在Java中,但问题是关于每种oo语言): 正如我看到的,它在Java中工作,但我不知道它是否真的被允许或应该被避免。我需要它来制作UML,而不是具体的代码。当然可以: 子类(B)是一个超类(a),它还拥有一个通用(a;尽管在我的示例中它是公共的)类型为超类是的,它可以。这是否是一个好主意取决于您实际在做什么。例如,FilterInputStream,它扩展了InputStream,有一个字段引用另一个InputStream。为什么不允许并接受它。有时无法避免。例如,考虑一个必须从语句<

例如(在Java中,但问题是关于每种oo语言):

正如我看到的,它在Java中工作,但我不知道它是否真的被允许或应该被避免。我需要它来制作UML,而不是具体的代码。

当然可以:


子类
(B)是一个
超类
(a),它还拥有一个
通用
(a;尽管在我的示例中它是公共的)类型为
超类

是的,它可以。这是否是一个好主意取决于您实际在做什么。例如,
FilterInputStream
,它扩展了
InputStream
,有一个字段引用另一个
InputStream
。为什么不允许并接受它。有时无法避免。例如,考虑一个必须从<代码>语句< /代码>继承并包含两个<代码>语句< /代码>对象的代码:<代码> IF>代码>对象。不总是直接的,但仍然。。。。如果它的子类不允许有包含其他对象的字段,那就太无聊了。。。只是想
    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);
       }
   }