面向对象的四大特性
理解面向对象编程及面向对象编程语言的关键就是理解其四大特性,它们分别是:
- 封装
- 抽象
- 继承
- 多态
关于封装特性
- 封装即隐藏属性信息,保护数据访问。
- 通过暴露有限的接口访问,授权外部仅能通过类提供的方式来访问内部信息或者数据。需要编程语言提供访问控制的语法,例如 Java 中的 public protect private 关键字。
- 封装的意义:1.保护数据不会被随意修改,提高代码的可维护性;2.仅暴露有限的必要接口,提高类的易用性。
关于抽象特性
- 隐藏方法的具体实现,使用者只需要关心只需要知道提供了哪些功能,而不需要知道其内部的实现。
- 抽象可以通过接口(Interface)或者抽象类(abstract class)来实现。
- 抽象的意义:1.提高代码的可维护性,可扩展性,修改实现不需要改变原有的定义,减少了代码的改动范围;2.降低了复杂度,减少细节负担。
关于继承特性
- 继承分为单继承和多继承。单继承表示一个子类只能继承一个父类,多继承表示一个子类可以继承多个父类。
- 需要编程语言提供特殊的语法机制,如 Java 中的 “extends”,C++ 中的 “:”,Java虽然不支持类的多继承,但是支持接口的多继承。
- 意义:主要用来解决代码复用的问题。
- 注意:Java不支持多继承的原因是会出现菱形继承问题。假设 类B 和 类C 都继承了 类A,并且都重写了 类A 中的同一个方法,而 类D 又同时继承了 类B 和 类C,此时 类D 就会继承 类B,类C 中的方法,那么 类D 到底是继承 类B 中重写 类A 的方法,还是继承 类C 中重写 类A 的方法?这就会产生歧义。
关于多态特性
- 多态是指子类可以替换父类,在代码实际运行中,调用子类的实现方法。
- 多态也需要特殊的语法机制,比如继承,接口等
- 意义:多态提高了代码的扩展性和复用性。