Java 类的基础(一):类的基本概念

1. final 关键字的作用?

答:

  • final 在修饰变量(静态变量、实例变量)的时候表示常量,即只能被赋值一次、变量在赋值后就不能再修改了,使用 final 可以避免误操作。
  • final 还可以修饰实例方法和局部变量

2. 实例方法直接访问实例变量,实现原理是?

答:在实例方法中,有一个隐含的参数,这个参数就是当前操作的实例自己,直接操作实例变量,实际也需要通过参数进行。

3. 实例方法和类方法(静态方法)的区别?

答:

  • 静态方法只能访问静态变量,不能访问实例变量,可以调用其他的静态方法,不能调用实例方法。
  • 实例方法既能访问实例变量,也能访问静态变量,既可以调用实例方法,也可以调用静态方法。
  • 可以简单理解为:静态是实例的子集

4. 实际开发中,我们经常把实例变量定义为 private 的,原因是?

答:这是为了减少误操作,直接访问变量没有办法进行参数检查和控制,而通过方法修改,可以在方法中进行检查。

5. 静态初始化代码块的执行时机是?

答:静态初始化代码块在类加载的时候执行,这是在任何对象创建之前,且只执行一次

6. 构造方法的特点?

答:

  • 名称是固定的,与类名相同。
  • 没有返回值,也不能有返回值。构造方法隐含的返回值就是实例本身。
  • 通过构造方法,可以更为简洁地对实例变量进行赋值。
  • 调用构造方法是 new 过程的一部分,实例方法通过对象调用,构造方法通过 new 调用。

7. this 关键字的作用?

答:

  • 表示当前实例。
  • 用于在构造方法中调用其他构造方法(必须放在第一行)

8. this 用于调用构造方法时为什么必须放在第一行?

答:为了避免误操作,防止后续修改被覆盖。构造方法是用于初始化对象的,如果要调用别的构造方法,先调用别的,然后根据情况自己再做调整。而如果反过来自己先初始化了一部分,再调用别的,自己的修改可能就被覆盖了。

9. 默认构造方法的特点?

答:每个类都至少要有一个构造方法,在通过 new 创建对象的过程中会被调用。但如果构造方法没什么操作要做,就可以省略。Java 编译器会自动生成一个默认的构造方法,也没有具体操作。但一旦定义了构造方法,Java 就不会再自动生成默认的。

10. 为什么 Java 有时候自动生成构造方法,有时候不生成呢?

答:在没有定义任何构造方法的时候,Java 认为用户用户不需要,所以就生成一个空的以被 new 过程调用;定义了构造方法的时候,Java 认为用户知道自己在干什么,认为用户是有意不想要不带参数的构造方法,所以不会自动生成。

11. 私有构造方法的使用场景可能有哪些?

答:

  • 不能创建类的实例,类只能被静态访问。如 MathArray 类,它们的构造方法就是私有的。
  • 能创建类的实例,但只能被类的静态方法调用。常见的使用场景是单例模式:类的对象有且只能有一个。在单例的场景中,对象时通过静态方法获取的,而静态方法调用私有构造方法创建一个对象,如果对象已经创建过了,就重用这个对象,这也是单例模式的初衷。
  • 只是用来被其他多个构造方法调用,用于减少重复代码
-------------本文结束感谢您的阅读-------------