Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Có thể định nghĩa static constructor trong Java không?

Không, chúng ta không thể định nghĩa static constructor trong Java. Nếu cố định nghĩa constructor với từ khóa static, sẽ xảy ra lỗi compile-time.

Nói chung, static mang ý nghĩa cấp độ lớp (class-level). Constructor dùng để gán giá trị khởi tạo cho biến instance (biến thể hiện). Cả hai static và constructor là khái niệm khác nhau và đối lập. Cần gán giá trị cho biến instance → dùng constructor. Cần gán giá trị cho biến static → dùng Static Blocks (khối tĩnh).

Ví dụ minh họa lỗi

public class StaticConstructorTest { 
    int x = 10; 
    // Khai báo Static Constructor - SAI 
    static StaticConstructorTest() { 
        System.out.println("Static Constructor"); 
    } 
    
    public static void main(String args[]) { 
        StaticConstructorTest sct = new StaticConstructorTest(); 
    } 
}

Code trên không compile được, báo lỗi: "modifier static not allowed here".

Kết quả đầu ra (lỗi compile)

StaticConstructorTest.java:4: error: modifier static not allowed here

Thay thế đúng: Static Block

public class StaticBlockExample { 
    static int count; 
    
    // Static block - chạy 1 lần khi load class 
    static { 
        count = 100; 
        System.out.println("Static block executed, count = " + count); 
    } 
    
    public StaticBlockExample() { 
        System.out.println("Constructor called"); 
    } 
    
    public static void main(String[] args) { 
        new StaticBlockExample(); 
        new StaticBlockExample(); 
    } 
}

Kết quả

Static block executed, count = 100 
Constructor called 
Constructor called

Tóm tắt: Static block chạy 1 lần khi nạp lớp. Constructor chạy mỗi lần new. Không có static constructor trong Java.