面向对象

Posted by 石坤 on 2019-01-02

思想

面向对象三大特征

封装

利用抽象数据类型将数据和基于数据的操作封装在一起, 使其构成一个不可分割的独立实体. 数据被保护在抽象类型的内部, 尽可能地隐藏内部的细节, 只保留一些对外接口使之与外部发生联系. 用户无需知道对象内部的细节, 但可以通过对象对外提供的接口来访问该对象.

优点:

  • 减少耦合: 可以独立地开发, 测试, 优化, 使用, 理解和修改
  • 减轻维护的的负担: 可以更容易被程序员理解, 并且在调试的时候可以不影响其他模块
  • 有效地调节性能: 可以通过剖析确定哪些模块影响了系统的性能
  • 提供软件的可重用性
  • 降低了构建大型系统的风险: 即使整个系统不可用, 但是这些独立的模块却是有可能是可用的

继承

继承是使用已存在的类的定义作为基础建立新类的技术, 新类的定义可以增加新的数据或新的功能, 也可以用父类的功能, 但不能选择性地继承父类. 通过使用继承我们能够方便地复用之前的代码, 提高开发效率.

继承所描述的是”is-a”的关系. 如果有两个对象A和B, 若可以描述为”A是B”, 则可以表示A继承B.

https://blog.csdn.net/jianyuerensheng/article/details/51602015

多态

多态分为编译时多态和运行时多态:

  • 编译时多态主要指方法的重载
  • 运行时多态指程序中定义的对象引用所指向的具体类型在运行期间才确定

运行时多态有三个条件:

  • 继承
  • 覆盖(重写)
  • 向上转型: 在多态中需要将子类的引用赋值给父类对象, 只有这样改引用才能够具备技能调用父类的方法和子类的方法.

设计模式

手写单例模式, 特别是双重检验锁以及静态内部类

手写工厂模式

理解MVC, 结合SpringMVC回答

理解代理模式, 结果Spring中的AOP回答

分析JDK中常用的设计模式, 例如装饰者模式, 适配器模式, 迭代器模式等