final
和static
是 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. 总结
final
和 static
关键字的相同点为:
final
和static
关键字都可以用于修饰变量和方法。
其不同点为:
final
关键字用于表示类、方法或变量不可变,而static
关键字表示类级别的变量或方法。final
关键字可以用于修饰类,表示类不能被继承;而static
关键字不能用于修饰类。final
关键字修饰的变量或方法属于类的实例(对象),而static
关键字修饰的变量或方法属于类本身。