Giả sử bạn có:
public class Foo
{
public void bar(String x, String y) {}
}
public class Foo2 extends Foo
{
public void bar(String x, Object y) {}
}
Bạn thực sự nghĩa Foo2.bar
để ghi đè Foo.bar
, nhưng do một sai lầm trong chữ ký, nó không. Nếu bạn sử dụng @Override
bạn có thể nhận được trình biên dịch để phát hiện lỗi. Nó cũng chỉ ra cho bất kỳ đọc mã này ghi đè phương pháp hiện có hoặc triển khai giao diện - tư vấn cho họ về hành vi hiện tại và tác động có thể của việc đổi tên phương thức.
Thêm vào đó, trình biên dịch của bạn có thể cung cấp cho bạn một cảnh báo nếu một phương pháp ghi đè một phương pháp mà không định @Override
, có nghĩa là bạn có thể phát hiện nếu ai đó đã thêm một phương thức với cùng một chữ ký vào một lớp cha mà bạn không biết về nó - bạn có thể không muốn để ghi đè phương pháp mới, vì phương pháp hiện tại của bạn có thể có ngữ nghĩa khác nhau. Trong khi @Override
không cung cấp cách "không ghi đè" phương pháp, ít nhất nó cũng làm nổi bật vấn đề tiềm ẩn.
Nguồn
2011-11-10 07:10:52
Đây là cuộc thảo luận về cùng một chủ đề [Khi nào bạn sử dụng chú thích @Override của Java và tại sao?] [1], có vẻ hữu ích. [1]: http://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why – COD3BOY
(http://docs.oracle.com/javase /tutorial/java/annotations/predefined.html)[Liên kết này có thể giúp bạn] –