整个面对对象编程,究其核心是分层理论。
即任何负责的事物都是由一个又一个简单构成,通过将多个简单合成成一个复杂,并向上提供接口。然后构成更复杂的事物。
同样是分层。通过继承达到的分层是金字塔状的分层。越往下继承(层数越多),新继承的类就会越多;而与之相对的关联达到的分层。则像千层饼一样,每一层都差不多大。
关联的耦合比继承要低得多。继承是一件确定的关系。继承了哪个父类就是哪个(而且一般为单继承)。但关联略有不同。你可以关联一个类,然后实际给他的是他的一个具体的子类,与此同时,还可以同时关联多个类,这样就拥有了多种不同的功能。
具体实践中:
继承有逻辑关系清楚的优点,但是如果全部用继承,会导致耦合太大,后期难以修改功能。因此尽量少使用继承。继承用于父类与子类,接口与实现。
通过关联和依赖用于职责划分。关联不同的类,实现不同的功能,而不是继承。