Skip to main content

Java 关键字

访问权限修饰符#

public#

公共的,被 public 所修饰的属性和方法都可以被所有类访问

protected#

受保护的,被 protected 所修饰的属性和方法可以在类的内部,相同包以及该类的子类所访问

private#

private 所修饰的属性和方法只能在该类的内部使用

没有修饰符#

没有添加任何访问修饰符,是表示默认的,在类的内部以及相同包下的类使用

定义类,函数,变量修饰符#

abstract#

抽象类#

使用了 abstract 关键字所修饰的类,叫做抽象类,抽象类无法实例化,也就是说,不能new来实例化一个对象

抽象方法#

使用了 abstract 关键字所修饰的方法,叫做抽象方法,抽象方法需要定义在抽象类中。相对于抽象方法,之前所定义的方法叫做具体方法(有声明,有实现)

interface#

接口的定位等同于 class,接口中的所有方法都是抽象方法。在声明接口中的方法时,可以使用 abstract 关键字,也可以不使用,通常情况下,都会省略 abstract 关键字

static#

可以用于修饰属性,也可以用于修饰方法,还可以用于修饰类

修饰属性#

  • 无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量;
  • 一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量的值也会随之发生变化
  • 如果一个成员变量是 static 的,那么我们可以通过类名.成员变量名的方法来使用它(推荐这种方式)

修饰方法#

static 修饰的方法叫做静态方法。

  • 静态方法来说,可以使用类名.方法名的方式来访问
  • 静态方法只能继承,不能重写(Override)

官方说明 Overriding and Hiding Methods.

final#

  • final 修饰一个类时,这个类叫做终态类,它不能被继承
  • final 修饰一个方法时,这个方法叫做终态方法,它不能被重写
  • final 修饰一个属性时:
    • 修饰一个原生数据类型,表示这个原生数据类型的值不能更改(比如 10 不能更改为 20)
    • 修饰一个引用类型,表示这个引用类型不能指向其他的对象,一直指向开始声明时的对象,而引用指向对象的内容是可以发生变化的

成员变量赋值#

一般来说有两种方式给成员变量赋值

  1. 在声明 final 类型的成员变量时就赋初值
  2. 在声明 final 类型的成员变量是不赋初值,但在类的所有构造方法中都必须为其赋初值

修饰类#

静态代码块#

静态代码块的作用也是完成一些初始化工作。

  • 首先执行静态代码块(只执行一次),然后再执行构造方法(每次生成一个对象时就调用一次,所以每 new 一次就调用一次构造方法)
  • 静态代码块在类被加载的时候执行,而构造方法是在生成对象时执行;想要调用某个类来生成对象,首先需要将类加载到 Java 的虚拟机(JVM)上,然后由 JVM 加载这个类来生成对象

静态的只能访问静态的,非静态的可以访问一切(静态,非静态)

synchronied#

// todo

判断实例#

instanceof#

判断某个对象是否是某各类的实例。

// 引用名 instanceof 类名(接口名),返回一个 booleanPeople people = new Man();// 结果为 true,因为 Man 是 People 的子类,根据基础,子类就是父类,因此 Man 也可以看作是 People 的实例System.out.println(people instanceof People);