封装: 隐藏数据,提供访问方法
继承: is-a关系,在编程时应优先考虑使用聚合has-a的关系
多态:基类指针或引用变量调用虚方法,实现在运行时,调用派生类实现的虚方法
接口:can-do, 行为约束 实现接口的类被约束必须实现接口指定的方法(行为).
面向接口而非实现----抽象
类职责单一