阅读下面的JAVA代码,正确的说法是()
class Foo{ 
int num; 
Baz comp = new Baz(); 

class Bar { 
boolean flag; 

class Baz extends Foo { 
Bar thing = new Bar(); 
double limit; 
}A.Bar是Baz子类
B.Foo 包含 Bar
C.Baz是Foo子类
D.Foo是Baz子类
E.Baz包含Bar 
它给的答案是C、E
对E选项不理解,麻烦高手帮忙讲解下…… 

解决方案 »

  1.   

    聚合(关联关系的一种):表示has-a的关系,是一种不稳定的包含关系。聚合类不必对被聚合类负责。使用集合属性表达聚合关系,当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚集关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。聚合关系(Aggregation):是关联关系的一种,是强的关联关系。聚合是整体与个体之间的关系。如汽车类与引挚类,轮胎类之间的关系就是整体与个体的关系
      

  2.   

    B extends A是繼承,可以理解成B is a A,說B是A的子類,或者A是B的父類
    在A中有B的實例,是聚合,可以理解為A has a B,說B包含于A,或者A包含B
      

  3.   

    如果说是包含的话,应该是因为在Baz类里面new了一个Bar对象吧,就是下面这部分代码:
    “ Bar thing = new Bar(); "  
      

  4.   

    简单理解,类Foo里面有个成员变量Baz,所以说Foo包含Baz。同理 Baz包含Bar。
    楼主把分给我吧。。
      

  5.   

    组合和继承嘛
    JAVA的俩种形式。记得编程思想里面特意提了组合和继承的好处和用途。
      

  6.   

    组合!class Baz extends Foo { 
    Bar thing = new Bar();  // 在Baz中持有Bar的引用 即组合 也叫包含 Baz就可以通过Bar的引用来调用Bar中相 
                                          //关的方法
    double limit; 
    }
      

  7.   

    java的组合和继承的区别class car {
       wheel wheels(4) = new wheel(); // 组合
       
       public void run() {   }    
    }class benz extends car {
        // 继承
    }class wheel {
       
    }
    简单点说,组合就是某个东西由另外某几个东西组成,继承就是某个东西是另个东西的一种类型