日历

September 2020
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

关于合成的基础类问题

Home Forums 《冒号课堂》讨论区 关于合成的基础类问题

  • This topic is empty.
Viewing 3 reply threads
  • Author
    Posts
    • #1082
      whlgh
      Member

      郑老师,你好,我在书上第294页讲合成的缺点时,看到一句话这么说:“合成的基础类只能是具体类型,不能是抽象类型”,请问合成的基础类是什么意思?为什么不能是抽象类型?能不能再详细讲解一下,谢谢。

    • #1277
      hui
      Keymaster

      合成的基础类(underlying class)是指构成一个(合成)类的那些组件(component)类。比如:

      class A { … }

      class B { … }

      class C

      {

      private A a = new A();

      private B b = new B();

      }

      其中,类A和类B就是类C的基础类。它们不能是抽象类型是因为它们的对象创建必须由类C负责,否则就不是合成(composition)关系而是聚合(aggregation)关系。(合成与聚合的区别请参见本书第334页:合成是基于值语义的包含,聚合是基于引用语义的包含)

    • #1278
      whlgh
      Member

      谢谢郑老师,这本书我正在看第三遍,每一遍的感觉都不一样。

    • #1279
      hui
      Keymaster

      难得你这么认真,请多提意见,谢谢!

Viewing 3 reply threads
  • You must be logged in to reply to this topic.
 请您评分1星(很差)2星(不行)3星(一般)4星(不错)5星(很棒)