郑老师,你好,我在书上第294页讲合成的缺点时,看到一句话这么说:“合成的基础类只能是具体类型,不能是抽象类型”,请问合成的基础类是什么意思?为什么不能是抽象类型?能不能再详细讲解一下,谢谢。
关于合成的基础类问题
(4 posts) (2 voices)-
Posted 1 year ago #
-
合成的基础类(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页:合成是基于值语义的包含,聚合是基于引用语义的包含)
Posted 1 year ago # -
谢谢郑老师,这本书我正在看第三遍,每一遍的感觉都不一样。
Posted 1 year ago # -
难得你这么认真,请多提意见,谢谢!
Posted 1 year ago #
Reply
You must log in to post.