1. Java中的方法覆盖(Overriding)和方法重载(Overload)是什么意思?
  2. Java中,什么是构造函数?什么是构造函数重载?什么是复制构造方法?
  3. Java支持多继承吗?
  4. 接口和抽象类的区别是什么?
  5. 在Java中为什么很多人说值传递和引用传递?引用传递的本质是什么?
  6. 进程和线程的区别是什么?

1:Override / Overriding / 方法覆盖 / 方法重写

  这种现象发生在有继承关系的子父类之中,它要求子类的重写方法必须与父类方法名相同,方法参数相同,返回值类型与父类相同或者是父类的子类型,访问权限不能小于父类原方法,不能比原方法抛出更多的异常。被重写的方法不能是 final 类型,不能是 private 类型, 不能是 static 类型

   Overlode / Overloding / 方法重载

  这种现象是指在同一个类中,有两个及两个以上的方法,它们方法名相同,方法参数不同,与返回值类型无关

2:在一个类中,方法名与类名相同,没有返回值类型的方法,被称为构造函数。在进行类的实例化时,会首先调用该类的构造函数。一般而言,如果没有手动设置一个类的构造函数,那么编译器会默认设置一个无参的构造函数。

  构造函数重载与方法重载类似,都是方法名与类名相同,但是方法参数不同。

  Java中没有复制构造方法这个概念。

3:Java中的类不支持多继承。Java可以通过 extends 来多次单继承以实现多继承的需求。Java中的接口支持多继承,即一个子接口可以继承多个父接口。另外Java可以通过 implement 来实现多个接口,当一个类有父类,有实现接口时,继承需要写在实现前面。

4:接口:

接口通过 interface 关键字定义,接口可以继承多个父接口,接口中的方法都是抽象的,接口中的变量默认被 final 修饰,接口中的方法默认被 public 修饰,接口不可以被实例化,Java8新增特性:被default 修饰的方法可以有方法体

   抽象类:

抽象类通过 abstract 关键字定义,抽象类只可以继承一个父类,抽象类中的方法可以包含抽象方法与非抽象方法,抽象类中的变量可以包含除 final 以外的变量,抽象类中的方法访问权限可以被 private protect public 修饰,抽象类不可以被实例化

5:Java中当基本类型作为参数传递时,传递的是基本类型中的值,当引用类型做为参数传递时,传递的是引用类型中的地址值,这两者传递的都是值,也就是说,Java中没有引用传递,只有值传递

引用传递的本质就是传递引用类型中的地址值

6:进程是一个执行的应用程序,线程是进程内部的一个执行序列。一个进程内部可以有多个线程。

二者区别:

  1. 地址空间与其他资源:进程之间相互独立,同一进程的各线程之间共享
  2. 通信:进程之间通信 IPC ,线程之间可以直接读写进程数据段(如全局变量)来进行通信
  3. 调度和切换:线程切换块,进程切换慢
  4. 多线程 OS 中,进程不是一个可执行的实体