Có điều gì đó mơ hồ về ý tưởng này và tôi cần một số giải thích rõ ràng.Ghi đè phương thức "riêng tư" trong java
Vấn đề của tôi là khi sử dụng mã này:
public class B {
private void don() {
System.out.println("hoho private");
}
public static void main(String[] args) {
B t = new A();
t.don();
}
}
class A extends B {
public void don() {
System.out.println("hoho public");
}
}
Đầu ra là hoho private
.
Đây có phải là do hàm chính nằm trong cùng một lớp với phương thức don
hoặc do ghi đè?
Tôi đã đọc ý tưởng này trong một cuốn sách và khi tôi đặt hàm main
trong một lớp khác, tôi nhận được lỗi trình biên dịch.
Một số đọc tốt: http://stackoverflow.com/questions/2000137/overriding-private- phương pháp-trong-java – CollinD
bạn đang ẩn và không ghi đè. – Rahul
Ngoài việc không hiển thị bên ngoài loại (và có lẽ có liên quan hơn đến câu hỏi ở đây), các phương thức riêng tư * không đa hình * - chỉ có phương thức được định nghĩa trên loại biểu thức sẽ được gọi ra; không có công văn động nào xảy ra. Trong ví dụ được hiển thị, * biểu thức 't' là kiểu' B' * và do đó 't.don()' sẽ * luôn luôn * được gọi là 'don' của B. * Loại thời gian chạy 'A' không liên quan * và không cho phép 'ghi đè' phương thức riêng tư như vậy. – user2864740