面向对象的基本特征:抽象、封装、继承、多态
抽象
抽象就是找出对象的共性,然后将这些对象抽象成类。因此类是对象的抽象,对象是类的具体表现形式。同一个类的不同对象具有某些相同的属性和行为,也就是共性,而特性应该从类中排除。
封装
封装是指类可以把自己的属性和方法隐藏起来,对外只暴露有限的信息。具体来讲就是类在实现过程中把对数据的定义和操作放在类的内部,对外只提供访问数据的接口,而实现细节隐藏在内部,对外不可见。
通过封装可以让使用者只关心对象对外的接口,而无须了解具体的实现方式。封装有效地做到了信息隐藏,提高了程序的安全性,并且内部实现的改动不会影响外部的使用,提高了程序的可维护性。
继承
继承可以使一个类拥有其他类的功能,在无须重复实现同样功能的前提下扩展自身的新增功能。这种开发模式大大提高了程序开发效率,当子类继承父类的时候,子类继承了父类的所有属性和方法。
多态
多态是指不同对象对于同样的消息做出不同的相应。例如,下达吃饭指令後,中国人用筷子吃,美国人用刀叉吃,巴西人用勺子吃...
面向对象的设计原则:单一职责原则、里氏替换原则、依赖倒置原则、开放封闭原则、接口隔离原则、最少知道原则
单一职责原则:
单一职责原则的核心思想是要求一个类只有一项职责,并且引起这个类发生变化的原因只有一个。
如果一个类承担的职责过多,这些职责之间难免互相关联,高度耦合,这与面向对象高內聚低耦合的原则是相悖的。当类的职责过多,就应该考虑将类拆分,而拆分的原则就是单一职责原则。使用单一职责原则可以使类变得简单,复杂度很低,并且短小的代码也更容易维护,可读性更高,此外当程序发生变更时,可以将变更风险降到更低。
里氏替换原则
里氏替换原则的核心思想是父类出现的地方必然能用其子类替换,并且替换後程序的行为不会发生变化。
里氏替换原则实际上对继承的方式提出约束。在遵循里氏替换原则的前提下,子类应该尽可能不覆盖父类中已实现的方法,因为这可能会破坏继承体系,使得系统的行为难以控制,但是子类中新增的方法不受限制。
依赖倒置原则
依赖倒置原则的核心思想是程序应该依赖于抽象的接口,而不应该依赖于具体的类,或者说编程时应该面向接口编程。
开放封闭原则
开放封闭原则的核心思想是程序应该是可扩展的,而不是可修改的,或者说程序对扩展开放,对修改封闭。
接口隔离原则
接口隔离原则的核心思想是尽量使用多个功能单一的小接口,而不要使用一个功能复杂的大接口,对一个庞大接口的依赖很容易造成接口污染。
最少知道原则
最少知道原则也叫迪米特原则,其核心思想是一个对象对其他对象的了解应该尽可能地少,对象之间通过尽量少的方法联系。