This là thứ khóa để chỉ tham chiếu đến đối tượng đang chứa nó như vậy thì:
public class ClassA {
public void methodA() {
Download download = new Download(this);
}
}
This đại diện cho đối tượng ClassA
public class ClassA {
public class ClassB {
Download download = new Download(this);
}
}
This đại diện cho đối tượng ClassB nằm trong ClassA
public class ClassA {
public static void methodA() {
Download download = new Download(this);
}
}
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ả.
public class ClassA {
private int a;
public void methodA(int a) {
this.a = a;
}
}
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.
public class ClassA {
private static int a;
public void methodA(int a) {
this.a = a;
}
}
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.
public class ClassA implement IInterfaceB {
private static int a;
@Override
public void methodB() {
ClassC classC = new ClassC(this);
}
public interface IInterfaceB {
public void methodB();
}
public class ClassC {
public ClassC(IInterfaceB b) {
int i = 1;
if(b instanceof ClassA) {
i = 2;
}
}
}
}
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…