Java 中的 final 关键字和 static 关键字

finalstatic是 Java 中的两个关键字,其中,final 关键字可用于修饰类,方法和变量, static 关键字可用于修饰变量和方法。

1. final 关键字

1.1. 修饰类

当一个类被声明为final时,表示该类不能被继承。例如:

public final class ClassA {
	// ...
}

ClassA 被声明为final,因此不能被其他类继承。

1.2. 修饰方法

当一个方法被声明为final时,表示该方法不能被子类重写(override)。例如:

public class MyBaseClass {
	public final void myFinalMethod() {
		System.out.println("This method cannot be overridden.");
	}
}

1.3. 修饰变量

当一个变量被声明为final时,表示该变量的值只能被赋值一次,即变量是不可变的。例如:

public class FinalVariableExample {
	public final int myFinalVariable = 42;
}

2. static 关键字

2.1. 修饰变量

当一个变量被声明为static时,表示该变量属于类,而不是类的实例(对象)。所有类的实例共享同一个静态变量。例如:

public class StaticVariableExample {
	public static int myStaticVariable = 0;
}

在这个例子中,myStaticVariable被声明为static,因此它属于类,而不是类的实例。所有StaticVariableExample的实例共享同一个myStaticVariable变量。

2.2. 修饰方法

当一个方法被声明为static时,表示该方法属于类,而不是类的实例(对象)。静态方法可以在不创建类实例的情况下直接通过类名调用。例如:

public class StaticMethodExample {
	public static void myStaticMethod() {
		System.out.println("This is a static method.");
	}
}

在这个例子中,myStaticMethod被声明为static,因此可以直接通过类名调用,如StaticMethodExample.myStaticMethod()

3. 总结

finalstatic 关键字的相同点为:

  • finalstatic关键字都可以用于修饰变量和方法。

其不同点为:

  • final关键字用于表示类、方法或变量不可变,而static关键字表示类级别的变量或方法。
  • final关键字可以用于修饰类,表示类不能被继承;而static关键字不能用于修饰类。
  • final关键字修饰的变量或方法属于类的实例(对象),而static关键字修饰的变量或方法属于类本身。