final
final 修饰类
final class FinalClass {
// Class implementation
}
// 无法继承FinalClass,因为它被final修饰
// class SubClass extends FinalClass { ... }
解释:FinalClass
被声明为 final
,因此不能被其他类继承。这种设计适用于那些不希望被继承或修改的类,如Java核心类库中的一些类,比如 String
。
final 修饰方法
class Parent {
public final void finalMethod() {
// Method implementation
}
}
class Child extends Parent {
// 无法覆盖finalMethod方法
// public void finalMethod() { ... }
}
解释:finalMethod()
被声明为 final
,因此子类不能重写这个方法。这样做可以确保方法的实现不会被子类修改或覆盖。
final 修饰变量(常量)
public class Constants {
public static final int MAX_SIZE = 100;
final double PI = 3.141592653589793;
}
-
MAX_SIZE
是一个静态常量,使用final
和static
修饰,表示这个常量在整个程序运行期间不会改变。 -
PI
是一个实例常量,使用final
修饰,一旦被赋值后就不能再修改。这种常量通常用于不会改变的数学常数或约定的值。
final 修饰属性(成员变量)
public class Example {
final int x = 10;
final MyClass obj = new MyClass();
}
-
x
是一个基本数据类型的实例变量,一旦初始化后就不能再修改其值。 -
obj
是一个对象引用变量,一旦初始化后就不能再指向其他对象,但是obj
引用的对象本身的属性是可以修改的。
static
静态变量(类变量)
通过
public static Integer a = 10;
定义了一个静态变量a
,它属于类而不属于对象,类加载时会被初始化,并且在整个类的生命周期内只有一份副本。
静态代码块
使用
static {}
来定义静态代码块,例如:static { System.out.println("我是静态代码块"); }
。静态代码块在类加载时执行,且只执行一次,通常用于静态变量的初始化或者执行一些静态资源的加载。
静态方法
使用
public static void print() {}
定义了一个静态方法print()
,它不依赖于类的实例而可以直接通过类名调用(例如:StaticDemo.print()
)。静态方法