Nếu tôi có hai lớp, A và B,Java gọi phương thức lớp con khi cố gắng sử dụng phương pháp lớp cha
public class A {
public int test() {
return 1;
}
}
public class B extends A{
public int test() {
return 2;
}
}
Nếu tôi làm: A a1 = new B()
, sau đó a1.test()
returns 2 thay vì 1 như mong muốn. Đây có phải chỉ là một điều kỳ quặc của Java, hay có lý do nào đó cho hành vi này?
Đây được gọi là 'liên kết động', Bạn cũng cần biết về' liên kết tĩnh'. Sẽ phức tạp hơn khi bạn cố ghi đè (ẩn ẩn) các trường thay vì các phương thức. Bạn sẽ tìm thấy rất nhiều câu hỏi về điều này trên SO hoặc google. –