(1)面向对象和面向过程的区别?

面向过程和面向对象都是一种思想。

面向过程

面向过程强调的是过程(动作),功能行为。  常见的支持面向过程的编程语言有C语言。

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

面向对象

面向对象强调的是对象(实体) 。

常见的支持面向对象的编程语言有C++、 Java 、C#。

面向对象这种思想是基于面向过程的。将过程封装进对象,强调具备了功能的对象。

更符合人类的思考方式,能够使问题简单化。

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

 

(2)面向对象的特性以及你对这些特性的理解?

  • 封装。

封装是面向对象编程的核心思想,将对象的属性和行为封装起来,其载体就是类,在类中编写的方法就是对实现细节的一种封装,编写一个类就是对数据和数据操作的封装。

采用封装的思想保证了类内部 数据结构的完整性,应用该类的用户不能轻易地直接操作此数据结构,只能执行类允许公开的数据。避免了外部操作对内部数据的影响,提高了程序的可维护性。

  • 继承

继承是面向对象实现复用的重要手段,当子类继承了父类后,子类将直接获得父类的属性和方法。继承让类与类之间产生了联系,为多态提供了前提。

  • 多态

多态是指不同子类型的对象对同一方法作出不同的响应。简单来说就是某一类事物具有多种存在形态,比如猫这个对象对应的类型是猫类型,同时猫也是动物的一种,也可以把猫称为动物。就是说一个对象对应着不同形态。多态的出现提高了代码的扩展性。

本质上多态分为两种:

a.编译时多态(静态多态)。方法重载(overload)实现的是编译时的多态性。

方法重载是一个类中的多态性的一种表现形式。

b.运行时多态(动态多态)。方法重写(override)实现的是运行时的多态性。

方法的重写:子类继承父类并覆盖父类已有的或抽象的方法,是父类与子类之间的多态性的一种表现形式。

  • 抽象

封装、继承、多态是面向对象的三大基本特征,抽象也是面向对象的重要部分。

抽象是一类对象的共同特征抽象总结出来构造类的过程,抽象只关注对象有哪些属性和行为,不关注具体的细节。

注意:默认情况下面向对象有 3 大特性,封装继承多态,如果面试官问让说出 4 大特性,就把抽象 加上去。

​​​​​​​(3)Java中多态的实现机制?

Java中多态靠的是父类或者接口定义的引用变量可以指向子类或具体实现类的实例对象。 而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法, 也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。

(4)Java语言有哪些特点?

  • 简单性
  • 面向对象
  • 可移植性
  • 多线程
  • 健壮性
  • 安全性

​​​​​​​(5)JDK、JRE、JVM三者间的联系与区别?

JavaSE面试题 | (一 )面向对象

  • JVM:虚拟机 

JVM是运行Java程序的核心虚拟机。

Java程序开发的三步骤:编写、编译、运行。

具体步骤:

Java源程序代码(程序员编写的*.java文件)->编译器javac编译->Java字节码文件(编译生成*.class文件 )->JVM对字节码进行解释执行->特定平台的机器码。

  • JRE:Java运行环境

JRE除了包含JVM之外,还包含运行Java程序的其他环境支持。是运行已编译 Java 程序所需的所有内容的集合。它不能用于创建新程序。

  • JDK

Java Development Kit,Java开发工具包,除了包括JRE,还包括编译器(Javac)和工具(Javadoc)。可以创建和编译程序。

二者比较

  • 如果只是为了运行一下 Java 程序的话,那么只需要安装 JRE 就可以了。
  • 如果需要进行一些 Java 编程方面的工作,那么就需要安装 JDK 了。

相关文章: