抽象有很多种,有数据的抽象和过程的抽象。数据的抽象就是从问题领域中提取出一些能反映问题本质的对象;这是面向对象OO的基本功。
OO中,在定义类的层次关系时,有几个重要的概念;如果能从抽象的角度来理解他们,有助于设计出更好的架构,能使解决方案更好的模拟/描述问题空间。
Public Inherit: Is-A ( Define real world object )
Compose: Has-A
Private Inherit: Use-A
Interface: Can-Do ( Define behaviors/capability model/set; used as a contract )
Interface Explicite Implementation:
multiple interfaces have the same signatures.
Inherited non-virtual functions:
inherit both the interface(contract/responsibility) and implementation
Inherited virutal functions:
inherit the interface(contract/responsibility) With implementation ON demand
Inherited pure virutal functions:
inherit the interface(contract/responsibility) ONLY