什么是面向对象语言
支持类或者对象的语法机制,具备封装、抽象、继承、泛化语法特性的编程语言
封装
保护数据不被任意修改,仅暴露有限的接口。
需要编程语言提供权限访问控制语法来支持,例如 Java 中的 private、protected、public 关键字。
提升类可读性、可维护性、易用性
抽象
隐藏具体实现,使用者只需关心功能,无需关心实现。
编程语言不需要特殊的语法机制来支持,可以通过接口类或者抽象类来实现。
提高代码的可扩展性、维护性,修改实现不需要改变定义,减少代码的改动范围。它也是处理复杂系统的有效手段,能有效地过滤掉不必要关注的信息。
继承
继承是用来表示类之间的 is-a 关系,分为两种模式:单继承和多继承。
编程语言需要提供特殊的语法机制来支持。
主要是用来解决代码复用的问题。
多态
多态是指子类可以替换父类,在实际的代码运行过程中,调用子类的方法实现。
需要编程语言提供特殊的语法机制来实现,比如继承、接口类、duck-typing。
多态可以提高代码的扩展性和复用性,是很多设计模式、设计原则、编程技巧的代码实现基础。
伪面向对象
1. 滥用getter,setter方法。定义了private属性,确有public的get和set方法,违反封装特性
2. 全局Constant,影响代码复用
3. 定义数据和方法分离的类。基于贫血模型的web开发模式
选择继承或组合
类之间的继承结构稳定,层次比较浅,关系不复杂,我们就可以大胆地使用继承。反之,我们就尽量使用组合来替代继承。
继承主要有三个作用:表示 is-a 关系,支持多态特性,代码复用。而这三个作用都可以通过组合、接口、委托三个技术手段来达成
网友评论