Header Ads

Lập Trình Hướng Đối Tượng Trong Java Bài 8: Biến Static và Phương Thức Static Trong Java


Trong Java từ khóa static có thể dùng cho biến hoặc phương thức, vì thế mình sẽ trình bày 2 mục là biến static và phương thức static.

1. Biến Static

- Chỉ phụ thuộc và lớp mà không phụ thuộc vào đối tượng
- Biến static chỉ khởi tạo một lần khi chương trình bắt đầu thực thi
- Biến static có thể truy cập trực tiếp bằng tên class mà không cần bất kỳ đối tượng nào.
Cú pháp : Tên_class.Tên_biến _static
Ví dụ:
public class StaticSample {
    public static int count = 0;
    public int a = 0;
    public StaticSample() {
       count++;
       a++;
    }
    public static void main(String[] args) {
       StaticSample aClass = new StaticSample();
       StaticSample bClass = new StaticSample();
       // Đếm số đối tượng đã được tạo (biến static ko bị gán lại)
       System.out.println(StaticSample.count);
       // Các Biến non static bị gán lại ứng với mỗi đối tượng
       System.out.println(aClass.getA());
       System.out.println(bClass.getA());
    } 
    public int getA() {
       return a;
    }
}
Kết quả:
2
1
1
Khi bạn new nhiều đối tượng A thì biến static trong các đối tượng A có giá trị giống nhau. Trong khi biến non static bị trả về 0 mỗi khi new đối tượng mới.

2. Phương Thức Static

- Chỉ phụ thuộc và lớp mà không phụ thuộc vào đối tượng
- Phương thức static chỉ có thể truy cập vào các thành phần static mà không thể truy cập vào các thành phần không static
- Phương thức static có thể truy cập trực tiếp bằng tên class mà không cần bất kỳ đối tượng nào.
Cú pháp : Tên_lớp.Tên_phương_thức_static
Ví dụ:
//Chuong trinh thay doi thuoc tinh chung cua tat ca doi tuong (truong static).  
  
class Student9{  
     int rollno;  
     String name;  
     static String college = "BachKhoa";  
       
     static void change(){  
     college = "QuocGia";  
     }  
  
     Student9(int r, String n){  
     rollno = r;  
     name = n;  
     }  
  
     void display (){System.out.println(rollno+" "+name+" "+college);}  
  
    public static void main(String args[]){  
    Student9.change();  
  
    Student9 s1 = new Student9 (111,"Hoang");  
    Student9 s2 = new Student9 (222,"Thanh");  
    Student9 s3 = new Student9 (333,"Nam");  
  
    s1.display();  
    s2.display();  
    s3.display();  
    }  
}   

Tóm lại

Biến static chỉ là một biến không phụ thuộc vào một đối tượng nào cả, tức là mình có thể truy vấn trực tiếp mà không cần phải khời tạo đối tượng(biến mức Class).

Ví dụ: Mình có một class tên là A trong class A có một biến static tên là abc=10;

Khi mình gọi biến này mình bằng cách: A obj = new A(); và truy vấn đến biến đó bằng cách thông thường làobj.abc. Điều đó là dư thừa, mà thay vì vậy mình có thể truy vấn một cách trực tiếp mà không cần khởi tạo đối tượngnhư mình đã đề cập, bạn có thể truy vấn trực tiếp tới biến đó bằng cách A.abc.

Tương tự cho phương thức static, mình cũng chỉ cần gọi <tên lớp>.<tên hàm>

Vậy cũng có thể dễ dàng đoán được rằng khi chạy ứng dụng thì thằng static đã được tạo ra mà không cần phải khởi tạo.

2 nhận xét:

Được tạo bởi Blogger.