Trong lập trình hướng đối tượng (OOP) trong Java thì bạn sẽ thường thấy từ khóa static xuất hiện trong các đoạn mã. Static được hiểu là tĩnh và nó sử dụng cho lớp, phương thức, biến. Bài viết này sẽ cùng tìm hiểu sâu về static trong ngôn ngữ Java cùng cách sử dụng.

Lớp tĩnh

Lớp tĩnh hay còn gọi là Static Class chỉ xảy ra khi các lớp đó lồng nhau. Hay là chỉ các lớp lồng nhau mới có thể là tĩnh.

Ví dụ:

public class parentClass {

    static class childClass {
        
    }

}

Trong ví dụ trên thì

  • parentClass: là lớp bên ngoài, lớp cha
  • childClass: là lớp bên trong, lớp con

Đặc điểm của lớp lồng nhau đó là:

  • Các lớp bên trong có thể truy cập cả các thành viên tĩnh và không tĩnh của lớp bên ngoài.
  • Một lớp có thể có nhiều lớp tĩnh.
  • Một lớp tĩnh chỉ có thể truy cập các thành viên tĩnh của lớp bên ngoài.
  • Lớp tĩnh chỉ có thể truy cập thành viên tĩnh của lớp bên ngoài

Hãy thử một ví dụ sau:

public class parentClass {

    static class childClass1 {
        public void displayInfo() {
            System.out.println("Đây là lớp childClass1");
        }
    }
    
    static class childClass2 {
        public void displayInfo() {
            System.out.println("Đây là lớp childClass2");
        }
    }

    public static void main(String[] args) { 

        parentClass.childClass1 obj1 = new parentClass.childClass1(); 
        obj1.displayInfo();
        
        parentClass.childClass2 obj2 = new parentClass.childClass2();
        obj2.displayInfo();
      }
}

Qua ví dụ trên bạn sẽ thấy rằng để tạo một đối tượng của lớp tĩnh thì cần nối lớp cha ở phía trước. parentClass.childClass1();

Tại sao lại phải sử dụng lớp tĩnh?

Một lớp tĩnh có thể truy cập các thành viên và phương thức riêng của lớp bên ngoài. Các lớp tĩnh được khai báo để loại bỏ các hạn chế đối với các lớp thành viên của một lớp bên ngoài. Trong trường hợp các chức năng của lớp bên ngoài bị hạn chế thì chúng ta cần một lớp thành viên để thực hiện nhiều chức năng hơn.

Phương thức tĩnh

Nếu như bạn đã đọc qua bài viết Phương thức (Method) trong Java thì mình có giới thiệu về cả phương thức tĩnh và không tĩnh.

Cách khai báo:

static void methodName() {
// Code
}

Để gọi phương thức tĩnh cần phải tạo đối tượng từ lớp bằng cách gọi tên lớp với phương thức. Đây chính là điều khác biệt so với phương thức không tĩnh (Gọi phương thức không tĩnh cần sử dụng từ khóa new để tạo đối tượng.)

TestClass.methodName();

Thử ví dụ sau:

public class parentClass {

    public static int number = 100;
    
    static void getName() {
        System.out.println("Đây là lớp phương thức tĩnh");
    }
    
    static void getNumber() {
        System.out.println(number);
    }

    public static void main(String[] args) { 

        parentClass.getName();
        parentClass.getNumber();
      }
}

Biến tĩnh

Biến tĩnh (Static) lưu trữ giá trị của một biến trong một vị trí bộ nhớ chung. Ưu điểm của biến tĩnh đó là giúp tiết kiệm bộ nhớ.

Khi chúng ta tạo đối tượng mới với từ khóa new thì một bản sao riêng biệt sẽ được tạo ra. Nhưng trong trường hợp của một biến tĩnh, một bản sao duy nhất được tạo ở cấp độ lớp và được chia sẻ bởi tất cả các đối tượng của lớp đó.

Giả sử chúng ta có danh sách 50 học sinh trong lớp học. Khi tạo đối tượng mới thì dữ liệu lưu trữ thành viên đó cũng được tạo ra. Trong 50 em học sinh đó đều sinh năm 2000. Và lúc chúng ta chỉ cần khai báo biến năm sinh bằng static để dùng chung cho 50 em đó. Như vậy sẽ tiết kiệm bộ nhớ đáng kể.

Xem ví dụ về biến static trong Java sau đây:

public class parentClass {

    static int numberOne = 100;
    
    public static void main(String[] args) { 

        parentClass obj = new parentClass();
        System.out.println(obj.numberOne);
        System.out.println(parentClass.numberOne);
      }
}

Kết thúc bài viết về từ khóa static trong Java, bạn đã hiểu như thế nào là một lớp tĩnh, phương thức tĩnh hay một biến tĩnh chưa? Chúc bạn thành công trên con đường chinh phục ngôn ngữ Java. Đừng quên ghé thăm blog của mình mỗi ngày để đón đọc những bài viết mới nhất.

Cùng chủ đề

Bình luận!

Xin lưu ý rằng tất cả các bình luận đều được kiểm duyệt theo chính sách bảo mật và tất cả các liên kết đều là nofollow. KHÔNG sử dụng từ khóa trong trường tên. Hãy để lại một cuộc trò chuyện cá nhân và ý nghĩa. *