Lập Trình Hướng Đối Tượng Trong Java Bài 10: Từ Khóa This Trong Java
Trong Java, this là một biến tham chiếu mà tham chiếu tới đối tượng hiện tại. Từ khóa this có rất nhiều cách sử dụng như sau:
Qui tắc: Lời gọi tới this() phải là lệnh đầu tiên trong Constructor.
Chúng ta có thể trả về từ khóa this như một lệnh từ phương thức. Trong tình huống này, kiểu trả về của phương thức phải là kiểu class (không là kiểu gốc). Bạn theo dõi ví dụ:
Cú pháp của this mà có thể được trả về như là một lệnh.
1. Để tránh tính lưỡng nghĩa giữa biến instance và tham số
Ví dụ:
//Vi du ve tu khoa this trong Java class Student11{ int id; String name; Student11(int id,String name){ this.id = id; this.name = name; } void display(){System.out.println(id+" "+name);} public static void main(String args[]){ Student11 s1 = new Student11(111,"Hoang"); Student11 s2 = new Student11(222,"Thanh"); s1.display(); s2.display(); } }
2. this() có thể được sử dụng để triệu hồi constructor của lớp hiện tại
Lời gọi this() constructor có thể được sử dụng để triệu hồi Constructor của lớp hiện tại. Hướng tiếp cận này là tốt hơn nếu bạn có nhiều Constructor trong lớp và muốn tái sử dụng Constructor đó.//Chuong trinh vi du loi goi this() constructor (constructor chaining) class Student13{ int id; String name; Student13(){System.out.println("Constructor mac dinh duoc goi");} Student13(int id,String name){ this (); //no duoc su dung de goi constructor cua lop hien tai. this.id = id; this.name = name; } void display(){System.out.println(id+" "+name);} public static void main(String args[]){ Student13 e1 = new Student13(111,"Hoang"); Student13 e2 = new Student13(222,"Thanh"); e1.display(); e2.display(); } }
3. Từ khóa this() có thể được sử dụng để triệu hồi ngầm định phương thức lớp hiện tại
Bạn có thể triệu hồi phương thức của lớp hiện tại bởi sử dụng từ khóa this. Nếu bạn không sử dụng từ khóa this, trình biên dịch Compiler tự động thêm từ khóa this trong khi gọi phương thức. Bạn theo dõi ví dụ sau:class S{ void m(){ System.out.println("Phuong thuc duoc trieu hoi"); } void n(){ this.m(); //khong can boi vi compiler thuc hien no cho ban. } void p(){ n(); //complier se them this de trieu hoi phuong thuc n() duoi dang this.n() } public static void main(String args[]){ S s1 = new S(); s1.p(); } }
4. Từ khóa this có thể được truyền như là một tham số trong phương thức
Cách này chủ yếu được sử dụng trong xử lý sự kiện. Bạn theo dõi ví dụ:class S2{ void m(S2 obj){ System.out.println("Phuong thuc duoc trieu hoi"); } void p(){ m(this); } public static void main(String args[]){ S2 s1 = new S2(); s1.p(); } }
5. Từ khóa this có thể được truyền như là tham số trong lời gọi constructor
Bạn cũng có thể truyền từ khóa this trong constructor. Nó là hữu ích nếu chúng ta phải sử dụng một đối tượng trong nhiều lớp. Bạn theo dõi ví dụ:class B{ A4 obj; B(A4 obj){ this.obj=obj; } void display(){ System.out.println(obj.data); //su dung thanh vien du lieu cua lop A4 } } class A4{ int data=10; A4(){ B b=new B(this); b.display(); } public static void main(String args[]){ A4 a=new A4(); } }
6. Từ khóa this có thể được sử dụng để trả về instance của lớp hiện tại
Chúng ta có thể trả về từ khóa this như một lệnh từ phương thức. Trong tình huống này, kiểu trả về của phương thức phải là kiểu class (không là kiểu gốc). Bạn theo dõi ví dụ:Cú pháp của this mà có thể được trả về như là một lệnh.
kieu_tra_ve ten_phuong_thuc(){ return this; }Ví dụ:
class A{ A getA(){ return this; } void msg(){System.out.println("Hello World");} } class Test1{ public static void main(String args[]){ new A().getA().msg(); } }Chúng ta cùng chứng minh rằng từ khóa this tham chiếu tới biến instance của lớp hiện tại. Trong chương trình sau, chúng ta in biến tham chiếu và this, kết quả của chúng là giống nhau.
class A5{ void m(){ System.out.println(this);//in ra cung tham chieu ID } public static void main(String args[]){ A5 obj=new A5(); System.out.println(obj);//in tham chieu ID obj.m(); } }
Post a Comment