Mở rộng giao diện chỉ cần thêm các hoạt động bổ sung được xác định trong bất kỳ trình triển khai nào và không thể phá vỡ bất kỳ triển khai hiện có nào (không giống như mở rộng một lớp). Nhưng nó có thể thay đổi (CHỈNH SỬA 3 NHỮNG BÀI HÁT) và do đó giá trị PERCIEVED của các hằng số (CHỈNH SỬA 2 NHƯ THẾ NÀO THEO CÁC LOẠI THỰC HIỆN).Tại sao không có giao diện cuối cùng trong Java?
Ví dụ, sau đây:
interface A {
int TEST = 6;
}
interface B extends A {
int TEST = 7;
}
public class InterfacesTest implements B {
public static void main(final String[] args) {
System.out.println(TEST);
}
}
sản lượng 7, khi có lẽ mục đích của giao diện A
là bất kỳ thực hiện A
chứa một lĩnh vực có giá trị từ test
6.
Nếu A là được tuyên bố cuối cùng chúng tôi có thể đảm bảo tất cả việc triển khai A
đều thấy cùng giá trị test
.
Vì vậy, có ai hiểu tại sao điều này là không thể?
P.S .: Điều này là KHÔNG một bản sao của this question, tôi biết họ không thể là cuối cùng, tôi quan tâm đến những suy nghĩ đằng sau những quyết định thiết kế dẫn đến kết cục này.
P.P.S .: Tôi hiểu các hằng số trong các giao diện thường là ý tưởng tồi, không phải là vấn đề ở đây.
EDIT: Vui lòng kiểm tra lịch sử sửa đổi, tiêu đề của câu hỏi này đã được chỉnh sửa theo một cách mà không phản ánh ý định của câu hỏi. Xin lỗi mọi người đã trả lời câu hỏi mà tôi không hỏi. Có, các trường giao diện ngầm hoàn toàn công khai tĩnh, tiếc là đó không phải là những gì tôi quan tâm cả.
EDIT 2 Để được hoàn toàn rõ ràng: câu hỏi này là về việc tại sao có thể không phải là một khối giao diện giao diện khác từ mở rộng nó (bằng cách thức hoặc một số tương đương).
Câu trả lời là họ đang * luôn * 'final'. Chúng cũng luôn là 'tĩnh'. – jbindel
Và các trường trong giao diện luôn là _public_ quá –
Downvote. Câu hỏi dựa trên một tiền đề giả. – EJP