Static

Khi bạn khai báo một biến, một phương thức với static thì khi hoạt động nó thuộc về lớp chứ không phải thuộc về đối tượng tạo ra từ lớp

Điều này có nghĩa chỉ có một phiên bản thực mà thành viên khai báo là static tồn tại, thậm chí cả khi bạn tạo ra nhiều đối tượng từ lớp hay không tạo ra đối tượng nào. Thành viên static được chia sẻ chung cho các đối tượng

Ví dụ có lớp Counter như sau

public class Counter {
  public static int COUNT=0;
  Counter() {
    COUNT++;
  }
}

Khi ứng dụng như sau

public class MyClass {
  public static void main(String[ ] args) {
    Counter c1 = new Counter();
    Counter c2 = new Counter();
    System.out.println(Counter.COUNT);
  }
}
//Outputs "2"

Xuất ra là "2", bởi vì biến COUNT là static, nó tăng 1 mỗi khi có một đối tượng kiểu Counter tạo ra. Ta đã tạo ra hai đối tượng ở ví dụ trên. Bạn cũng có thể truy cập đến biến tĩnh này thông của đối tượng, thông qua tên lớp, như Counter.COUNT, c1.COUNT hoặc c2.COUNT là một

Với hàm tính static có ý nghĩa tương tự, ví dụ:

public class Vehicle {
  public static void horn() {
    System.out.println("Beep");
  }
}

Khi ứng dụng như sau

public class MyClass {
  public static void main(String[ ] args) {
    Vehicle.horn();
  }
}

Ví dụ khác về các phương thức static (tính) là các phương thức thuộc lớp Math, các hàm về toán học được sử dụng mà không cần phải tạo ra một đối tượng lớp Math, lớp này ở bài tiếp theo

Phương thức main() điểm mồi chạy chương trình luôn là static

final

Từ khóa final được dùng để tạo hằng số, có nghĩa là nó được gán một lần duy nhất.

Ví dụ:

class MyClass {
    public static final double PI = 3.14;

    public static void main(String[ ] args) {
        System.out.println(PI);
    }
}

MyClass.PI giờ sẽ là hằng số, nó đã được gán 1 lần giá trị 3.14, từ sau đó chỉ có thể lấy giá trị, mọi thao tác cố gắng gán giá trị khác vào PI sẽ gây lỗi

Một phương thức, một lớp cũng có thể khai báo với final, nó cho biết không thể nạp chồng bởi các lớp kế thừa. Những khái niệm này (như kế thừa, nạp chồng overridden thảo luận sau.


Đăng ký nhận bài viết mới