问:谈谈你对面向过程和面向过程的理解

参考

  • 面向对象主要有三大特性:继承、封装、多态。

  • 面向对象关注对象本身和结果,面向过程注重实现的过程。
    面向对象可以理解成对待每一个问题,都是首先要确定这个问题由几个部分组成,而每一个部分其实就是一个对象。然后再分别设计这些对象,最后得到整个程序。

  • 例如:当提问者与自身谈话时

    以面向过程思想分析,一问一答,如自我介绍、项目经历、实习经历等等,按问题一个一个回答,重点在问答过程上

    以面向对象思想分析,先 new 两个对象出来,一个提问者,一个回答者,在各自的对象里封装了提问(回答)这些自我介绍、项目经历、实习经历的方法,然后根据需要调用方法即可。这样做的好处就是 假设中途提问者追加其他遗漏的问题,如果是面向过程,就需要从头到尾重新回答一遍,强调的是过程,如果是面向对象,只需要把遗漏的信息封装成方法放在对象里,直接调用对象的方法就可以,强调的是对象。

面向对象优缺点

  • 优点:易维护、易复用、易扩展,由于面向对象具有封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加灵活
  • 缺点:性能比面向过程低

面向过程优缺点

  • 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源
    单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发,性能是最重要的元素。
  • 缺点:不像面向对象易维护、易复用、易扩展

问:对面向对象思想的理解

万物皆对象

  • 面向对象这种程序设计模式他将现实世界中的一切事物都看做是对象。例如一个人、一辆车、一只鸟等,都可以是一个对象。
  • 强调从对象出发,以对象为中心,用人类的思维方式来认识和思考问题。
  • 每个对象都具有各自的状态特征(属性)及行为特征(方法),Java通过对象之间行为的交互来解决问题

Java 面向对象的三大特性

  • 封装(核心思想):将对象的属性和行为特征包装到一个程序单元(类)中,把实现细节隐藏起来,通过公用的方法来展现类对外提供的功能,提高了类的内聚性,降低了对象之间的耦合性
  • 继承:对原有类的拓展,指从已有类中派生出新的类,新的类能够吸收已有类的数据属性和行为,并能扩展新的功能
  • 多态:是在继承的基础上,指允许不同类的对象对同一消息做出响应,根据对象创建实例的不同调用不同的方法,本质是编译时和运行时才决定对象的行为
    例如,子类类型的对象可以赋值给父类类型的引用变量,但运行时仍表现子类的行为特征(在内存中运行的,new的实例)。即同一种类型的对象执行同一个方法时可以表现不同的行为特征

延伸——Java语言特点

  • Java 为纯对象的语言
  • 跨平台/移植性(一次编译到处运行)
    了解Java执行过程
    • 最开始编写的 Java 代码是 #¥**.java文件**
    • 在编译(javac命令)后,原有文件会生成一个新的 Java字节码文件(#¥.class)
    • JVM 会执行字节码文件,并把字节码文件转化为机器指令
    • 机器指令可以直接在 CPU 上运行,也就是最终的程序运行
  • 较好的安全性、健壮性
  • 提供很多内置库类,简化开发人员的程序设计工作(如支持多线程、垃圾回收器)
  • 易理解,移除C语言中的指针等复杂结构
  • 高性能、分布式等
    面试常问Java基础问题

相关文章: