Luận một chút về Static trong java

Đầu tiên ta cần nói static thuộc về lớp chứ không phải chứ không thuộc về instance(thể hiện ) của lớp.
Trong Java, static có thể là :

+ Biến static
+ Phương thức static
+ Khối static
+ Lớp static

Biến static:
– Còn được gọi là biến tĩnh, dùng để tham chiếu thuộc tính chung của tất cả đối tượng
– Biến Static lấy bộ nhớ chỉ một lần trong Class Area tại thời điểm tải lớp đó tức là khi ta thay đổi giá trị static thì biến static của tất cả đối tượng cũng sẽ thay đổi
– Biến static chỉ có thể được truy cập bởi phương thức static

Ví dụ :

public class MyClass {
    static public int X = 2;
    static public void method() {
        X = 5;
    }

    public static void main(String[] args) {
        MyClass o = new MyClass();
        MyClass.method();
        MyClass.X = 10;
        System.out.printf("x=%d, y=%d", o.X, MyClass.X);
    }
}
//Đáp án: 10, 10;

Phương thức static
– Phương thức static thuộc lớp chứ không phải đối tượng của lớp
– Một phương thức static được gọi có thể gọi trực tiếp bằng lowps
– Phương thức static có thể truy cập và chỉnh sửa biến static
– Hạn chế phương thức static: không thể truy cập biến non-static, không thể sử dụng từ this, super

Khổi static
– Khối static được dùng để khởi tạo hoặc thay đổi giá trị của các biến static
– Nó được thực thi trước phương thức main tại thời điểm tải lớp
– Một class có thể có nhiều static blocks

Lớp static
– Một class được có thể được đặt là static chỉ khi nó là một nested class (tức nằm trong một lớp khác). Một nested static class có thể được truy cập mà không cần một object của outer class (lớp bên ngoài).

public class TestClass {
    private String subject;
     
    UsingStaticExample (String subject) {
        this.subject = subject;
    }
     
    // nested static class
    static class MyWebsite {
        public static String WEBSITE = "gpcoder.com";
    }
     
    public void print() {
        System.out.println("Subject = " + subject);
        System.out.println("Website = " + MyWebsite.WEBSITE);
    }
     
    public static void main(String[] args) {
        TestClass ex1 = new TestClass("Hello World");
        ex1.print();
    }
//Hiển thị: Subject = Hello World
// Website = gpcoder.com
//Code mình tham khảo từ gpcoder.com

Conal Dev

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar

Facebook