返回
Java 面向对象之关键词 static 和 final
Android
2023-09-17 12:14:58
Java 中的 static 和 final 非常常见,但想要深入理解却不容易。本文通过简单易懂的例子介绍了 Java 中的关键字 static 和 final 的作用、使用方法和注意事项。
static 关键字
static 关键字用于声明静态成员变量和静态方法。静态成员变量属于类,而非对象,因此它只存在一份,所有对象共享该变量。静态方法也属于类,而非对象,因此它可以直接被类名调用,无需创建对象。
static 变量
static 变量的作用域是整个类,而非对象,因此它只存在一份,所有对象共享该变量。
class MyClass {
private static int count = 0;
public static void main(String[] args) {
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
// 两个对象共享同一个 count 变量
obj1.count++;
obj2.count++;
System.out.println("count: " + count); // 输出: count: 2
}
}
static 方法
static 方法的作用域是整个类,而非对象,因此它可以直接被类名调用,无需创建对象。
class MyClass {
public static void main(String[] args) {
// 直接使用类名调用 static 方法
MyClass.printMessage();
}
public static void printMessage() {
System.out.println("Hello, world!");
}
}
final 关键字
final 关键字用于声明常量和 final 类。常量一旦被初始化,就不能再被修改。final 类不能被继承。
final 常量
final 常量一旦被初始化,就不能再被修改。
final int MY_CONSTANT = 10;
// 以下代码会报错:
// MY_CONSTANT = 20;
final 类
final 类不能被继承。
final class MyClass {
// ...
}
// 以下代码会报错:
// class MyChildClass extends MyClass {
// // ...
// }
static 和 final 的注意事项
- static 成员变量和方法不能被重写。
- final 常量和 final 类不能被修改。
- static 成员变量和 final 常量必须在声明时初始化。
- static 成员变量和 final 常量不能被声明为 private。
总结
static 和 final 是 Java 中非常重要的两个关键字。static 关键字用于声明静态成员变量和静态方法,final 关键字用于声明常量和 final 类。static 成员变量和方法属于类,而非对象,因此它们只存在一份,所有对象共享该变量。static 方法也可以直接被类名调用,无需创建对象。final 常量一旦被初始化,就不能再被修改。final 类不能被继承。