OO 常见面试题


composition vs inheritance

composition mean  A has B or A contains B.   (A has a property whose type is B)

inheritance mean A is B.  (A extend B)

优缺点对比:

composition的弊端:需要自己对包含类型的方法进行再次封装,代码比较冗余.

inheritance的弊端: 如果父类的特性与子类并不是很契合的时候,子类继承父类很容易造成误解,因为实际父类开放的某些方法并不适合子类.

如何取舍?

如果子类和父类的特性非常契合的时候,我们可以使用inheritance

如果子类只是有部分特性与父类相同时,我们尽量应该使用composition

讲得很好的一个链接:https://blog.csdn.net/iteye_12150/article/details/82539023

OOD