返回

Java 面向对象之关键词 static 和 final

Android

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 类不能被继承。