Học Java

Trong bài viết này, chúng ta sẽ cùng tìm hiểu về từ khóa this trong Java nhé.

Ánh xạ đối tượng khi cần sử dụng

Nếu không sử dụng this trong phương thức khởi tạo, ta có ví dụ sau:

public class Person {
 
   public String name;
 
   public  int age;
 
   public float height;
 
   public Person(String name, int age, float height) {
 
       name = name;
 
       age = age;
 
       height = height;
 
   }
 
}

Ta hãy thử khởi tạo đối tượng và in thông tin ra

public static void main(String[] args) {

   Person person1 = new Person("Huy",21,1.7f);

   System.out.println(person1.name);

   System.out.println(person1.age);

   System.out.println(person1.height);

}

Kết quả:

null

0

0.0Code language: JavaScript (javascript)

Ta thấy xuất hiện giá trị mặc định của thuộc tính khi khởi tạo, có nghĩa việc gán giá trị khi khởi tạo không thành công.

Gọi phương thức từ lớp hiện tại

Ngoài gọi được thuộc tính, thì this có thể gọi đến phương thức từ lớp hiện tại.

Ví dụ: Viết phương thức trả thông tin Person và gọi mỗi lần khởi tạo đối tượng

public class Person {

   public String name;

   public  int age;

   public float height;




   public Person(String name, int age, float height) {

       this.name = name;

       this.age = age;

       this.height = height;

       this.getInfo();

   }




   public void getInfo() {

       System.out.println("Name: "+this.name);

       System.out.println("Age: "+this.age);

       System.out.println("Height: "+this.height);

   }




   public static void main(String[] args) {

       Person a = new Person("Huy",20,17.f);

       Person b = new Person("Binh",20,17.f);




   }




}

Kết quả:

Name: Huy

Age: 20

Height: 17.0

Name: Binh

Age: 20

Height: 17.0Code language: CSS (css)

Gọi lại phương thức khởi tạo

Khi dùng this() thì sẽ triệu hồi phương thức khởi tạo Constructor của lớp hiện tại. Thường được sử dụng trong việc có nhiều phương thức khởi tạo và muốn tái sử dụng code nhiều lần:

Ví dụ: Ta tạo 3 phương thức khởi tạo cho Person như sau:

public class Person {

   public String name;

   public  int age;

   public float height;




   public Person(String name) {

       this.name = name;

   }




   public Person(String name, int age) {

       this(name);

       this.age = age;

   }




   public Person(String name, int age, float height) {

       this(name, age);

       this.height = height;

   }

}

Như vậy ở phương thức main ta có thể khởi tạo đối tượng Person theo nhiều cách khác nhau:

public static void main(String[] args) {

   Person a = new Person("Huy");

   Person b = new Person("Huy",22);

   Person c = new Person("Huy", 22, 1.9f);

}

Trả về đối tượng (instance) của lớp hiện tại

Ta sẽ trả về instance của lớp hiện tại bằng từ khóa this như sau:

public class Person {

   public String name;

   public  int age;

   public float height;




   public Person(String name, int age, float height) {

       this.name = name;

       this.age = age;

       this.height = height;

   }

   public Person getInstance(){

       return this;

   }

}




public static void main(String[] args) {

   Person a = new Person("Huy",22,19f);

   System.out.println(a);

   System.out.println(a.getInstance());

}

Kết quả:

test.Person@1b6d3586

test.Person@1b6d3586Code language: CSS (css)

Ở kết quả đều trả về chung một giá trị, giá trị in ra theo kiểu quy tắc dữ liệu tham chiếu.

Kết luận

Từ khóa this được sử dụng trong các trường hợp sau:

  • Ánh xạ đối tượng khi cần sử dụng
  • Gọi phương thức từ lớp hiện tại
  • Gọi lại phương thức khởi tạo
  • Trả về đối tượng (instance) của lớp hiện tại

Bài viết liên quan

Leave a Reply

Your email address will not be published.