类之间的多种关系
1. is-a(is-a-kind-of)
即派生类对象也是一个基类对象,可以对基类对象执行的任何操作,也可以对派生类对象执行。比如:香蕉是一种水果,所有可以从Fruit 类派生出Banana类。
2. has-a
午餐可能包含水果,但通常午餐并不是水果,所以不能从Fruit 类派生出Lunch类来在午餐中添加水果。应该是:午餐有水果。
3. is-implemented-as-a
作为…来实现。例如:可以使用数据来实现栈,但是从Array类派生出Stack例如是不合适的,因为栈不是数组。比如栈没有数组索引。正确的做法是:通过让栈包含一个私有Array 对象成员来隐藏数组实现。
4. uses-a
计算机可以使用打印机,但是从Computer 类派生出Printer类是没有意义的。然而可以使用友元来处理两个对象之间的通信。
5. is-like-a
人们常形容脾气大的女人为母老虎,但是女人不是老虎。所以不能从Tiger类派生出Women类。
继承可建立的关系:1
继承不可建立的关系:2、3、4、5。