Tôi đã đọc hướng dẫn Overriding and Hiding Methods. Và từ đó, tôi thu thập được như sau:Cách ẩn của siêu lớp
Nếu một lớp con định nghĩa một phương thức lớp với chữ ký giống như một phương pháp lớp trong lớp cha, phương pháp trong subclass da các ai trong lớp cha.
Như vậy, tôi đã làm như sau:
import javax.swing.JTextArea;
public final class JWrappedLabel extends JTextArea{
private static final long serialVersionUID = -844167470113830283L;
public JWrappedLabel(final String text){
super(text);
setOpaque(false);
setEditable(false);
setLineWrap(true);
setWrapStyleWord(true);
}
@Override
public void append(final String s){
throw new UnsupportedOperationException();
}
}
Những gì tôi không thích về thiết kế này là append
vẫn là một thể nhìn thấy phương pháp của lớp con. Thay vì ném UnsupportedOperationException
, tôi có thể đã để trống cơ thể. Nhưng cả hai đều cảm thấy xấu xí.
Điều đó đang được nói, có cách nào tốt hơn để ẩn các phương thức của lớp bậc trên không?
chỉ để nhấn mạnh (@Simone có câu trả lời đầy đủ): bạn ** phải không ** phương pháp ghi đè của một lớp cha mà không hoàn thành hợp đồng. BTW, câu bạn trích dẫn là về các phương thức _class_ trong khi bạn ghi đè phương thức _instance_ tại đây. – kleopatra
@kleopatra, tôi đánh dấu câu trả lời tôi đã làm bởi vì tôi cảm thấy rằng câu hỏi này sẽ không thu hút thêm sự chú ý nào nữa. Tôi vẫn không cảm thấy rằng câu hỏi này đã được trả lời đầy đủ. Có lẽ bạn có thể cung cấp một của riêng bạn? Bạn dường như có kiến thức! : D – mrkhrts
tôi biết câu hỏi đó là cũ nhưng tôi chỉ tìm thấy điều này vì vậy ... Tôi thường sử dụng cách của bạn để làm điều này, một điều mà tôi cũng làm là ghi đè lên các phương thức như là cuối cùng để lớp không thể được mở rộng đến bật một số tính năng nhất định như nối thêm. –