30/09/2018, 18:20
Không hiểu về ý nghĩa và cách hoạt động của con trỏ this trong java
Em mới bắt đầu học Java không hiểu con trỏ this cho lắm. Cụ thể là trong code
public class GiaoDien {
public GiaoDien() {
download = new Download(this);
}
}
hay là
private JButton createJButton(String buttonName) {
JButton btn = new JButton(buttonName);
btn.addActionListener(this);
return btn;
}
em không hiểu nó có ý nghĩa gì và cách nó hoạt động ra sau mong các anh chị chỉ giúp ?
Bài liên quan
Bạn đưa ví dụ không đầy đủ lắm nên khó nói cụ thể cho bạn. Nhưng theo mình biết, this là từ dùng để đại diện cho một cái gì đó, có thể là một class, object v.v
Trong ví dụ 1 của bạn: this này mình không dám chắc.
ví dụ 2 thì this nó thay cho một ActionListener nào đó. Vì trong trường hợp của bạn, người ta lấy luôn class hiện tại có implements ActionListener interface, nên để tiện lợi họ viết this thay vì viết tên class.
Thêm một ví dụ khác cho bạn:
}
Ở ví dụ trên, bạn thấy là có 2 name:
This ở đây nhằm phân biệt name nào. This đại diện cho class thisDemo. => nghĩa là, lấy name tham số, gán cho name thuộc tính của class.
Hic, hi vọng bạn hiểu được phần nào
This là thứ khóa để chỉ tham chiếu đến đối tượng đang chứa nó như vậy thì:
This đại diện cho đối tượng ClassA
This đại diện cho đối tượng ClassB nằm trong ClassA
Báo lỗi vì methodA là static nghĩa là nó không phải là phương thức của một object nên không có object nào chứa nó nên this không tham chiếu đền cái gì cả.
This dùng để phân biệt giữa thuộc tính a (property) của đối tượng ClassA và tham số a (parameter) của phương thức methodA.
Có một vài IDE sẽ không báo lỗi nhưng this đang được dùng sai với nguyên tắc của OOP. Sở dĩ được cho phép là vì viết như thế này không bị conflict về mặt cú pháp mà thôi.
This chính là ClassA và ClassA do triển khai (implement) IInterfaceB nên this có thể truyền vào ClassC. Tham số truyền vào là this vẫn đảm bảo nó là ClassA nên instanceof trả về true nên i sẽ bằng 2.
Còn thiếu cái gì nữa không nhỉ?
P/s: Bạn viết method sai rồi nhé. Nên chú ý những cái căn bản cho thành thói quen…
This không thể đại diện cho class và interface nhé. Lí do có giải thích ở trên comment trên. This dùng để đại diện cho thực thể (thể hiện/instance) hay nói cách khác là đối tượng(object) cụ thể.
Thanks bạn@GDGHN_AndroidTeam nhé
ag em hiểu rồi. Loay hoay mãi mới xong được. Cảm ơn các anh