Java 基础
1. 解释下什么是面向对象?面向对象和面向过程的区别?
面向对象是一种基于面向过程的思想,这是一种万物皆对象的思想,现实中的任何物体
都可以归类为一种事物,每一个个体都是一类事物的实例,面向对象的编程是以对象为中心,
消息作为驱动。
两者之前的区别:
编程思路不同,面向过程以实现功能的函数式开发为主,面向对象则是先抽象出类,
属性以及方法,然后通过实例化类,执行方法来完成功能。
封装性不同,两者都具有封装性,面向对象封装的是数据和功能,面向过程封装的
是功能。
面向对象具有继承性和多态性,面向过程则没有。
2. 面向对象的三大特性?分别解释下?
封装:封装是把数据和操作数据的方法封装起来,对数据的访问只能通过已定义的接口。
这样可以提高数据的安全性。
继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类
(超类/基类),得到继承信息的被称为子类(派生类)。子类拥有父类对象所有的属性和
方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥
有。因为在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外
部放上子类独有的属性,两者合起来形成一个子类的对象。子类可以拥有自己属性和方法。
子类可以用自己的方式实现父类的方法。
多态:分为编译时多态(方法重载)和运行时多态(方法重写)。要实现多态需要做两
件事:一是子类继承父类并重写父类中的方法,二是用父类型引用子类型对象,这样同样的
引用调用同样的方法就会根据子类对象的不同而表现出不同的行为。
3. JDK、JRE、JVM 三者之间的关系?
JDK(Java Development Kit):是 Java 开发工具包,是整个 Java 的核心,包括了 Java
运行环境 JRE、Java 工具和 Java 基础类库。
JRE( Java Runtime Environment):是 Java 的运行环境,包含 JVM 标准实现及 Java
核心类库。
JVM(Java Virtual Machine):是 Java 虚拟机,是整个 Java 实现跨平台的最核心的部
分,能够运行以 Java 语言写作的软件程序。所有的 Java 程序会首先被编译为 .class 的
类文件,这种类文件可以在虚拟机上执行。
4. 重载和重写的区别?
重载:Overload,发生在一个类中,不同的方法方法名相同,参数类型,个数,顺序不
相同,其他的可以不同。
重写:Override,重写是子类对父类的允许访问的方法的实现过程进行重新编写方法的
重写(override)两同两小一大原则: