1. What is inheritance a inherits B, which indicates that a is a type of B, and that all behavior of B is meaningful to a eg:a=woman b=HUMANA= Ostrich b=Bird (NO), because the bird can fly, but the ostrich will not. 2. What is a combination if logically a is a "part" of B (a), then B is not allowed to derive from a, but to combine B with a and other things. For example, the eye, Nose (Nose), Mouth (Mouth), ear (ear) are part of the head (heads), so the class head should be composed of a group of eyes, Nose, Mouth, and ears, not derived3Advantages and disadvantages of inheritance: it is easy to implement new implementations because most of them can be inherited. It is easy to modify or extend those implementations that are reused. Disadvantage: It destroys encapsulation because it exposes the implementation details of the parent class to subclasses. The "white box" is reused because the inner details of the parent class are usually visible to subclasses. When the implementation of the parent class changes, the subclass will have to change as well. Implementations that inherit from the parent class will not be able to change during run time. 4Advantages and disadvantages of the combination: the container class can only access it through the interface of the contained object. The "black box" is reused because the inner details of the contained object are not visible to the outside. Good encapsulation. The interdependence of the implementations is relatively small. (less dependency between the contained object and the container object) Each class is focused on only one task. You can dynamically define (an object's) composition during run time by obtaining a reference to another object with the same type. Disadvantage: Causes too many objects in the system. In order to be able to use several different objects as a combination block (composition block), the interface must be carefully defined. 5. Choice of both is-a relationship with inheritance expression, has-a relationship with a combination of expression inheritance is a concept of specialization and combination is a concept of assembly is also determined to be a combination or inheritance, one of the clearest ways is to ask whether a new class is required to map upward, that is, when we want to reuse the original type as a new type of internal implementation, we'd better set our own, If we want not only to reuse internal implementations but also to reuse interfaces, we use inheritance. 6Rule: Prioritize (object) combinations rather than (class) inheritance
Personal understanding: The combination of coupling degree is small, easy to expand, inheritance coupling is too large, should be preferred to use the combination, rather than inheritance.
Differences in C + + inheritance and composition