关系论
------------------------------------------------------------------
类之的不同表现在功能上(在程序中表现为函数)
对象之间的不同表现在属性上(即属性的值不同.)
------------------------------------------------------------------
如果一个功能不能用在所有的子类上, 那么这个功能不应当出现在父类.
设计一个子类,要分析现实世界的对象, 而设计一个父类应当分析子类.在子类的基础上进行抽象
所以应当先设计子类,然后再设计父类.
父类同时要考虑到新的子类出现的可能.