2012-06-14 22 views
6

Tôi có hai tập tin:Ý nghĩa của "Không thể làm giảm tầm nhìn của các phương pháp di truyền" với một giao diện

public interface PrintService { 
    void print(PrintDetails details); 
    class PrintDetails { 
     private String printTemplate; 
    } 
    public interface Task { 
     String ACTION = "print"; 
    } 
} 

public class A implements PrintService { 
    void print(PrintDetails details) { 
     System.out.println("printing: " + details); 
    } 
    String action = PrintService.Task.ACTION; 
} 

tôi nghĩ các mã trông ổn, nhưng tôi nhận được một lỗi trong tệp thứ hai cho dòng void print(PrintDetails details) { có trạng thái:

Không thể giảm khả năng hiển thị của phương pháp được kế thừa từ PrintService.

Ai đó có thể giải thích điều này có ý nghĩa gì đối với tôi không?

Trả lời

21

Trong một giao diện Java từng phương pháp là theo mặc định public:

Mỗi phương pháp kê khai trong cơ thể của một giao diện là ngầm trừu tượng, vì vậy cơ thể của nó luôn được thể hiện bằng một dấu chấm phẩy, không phải là một khối.

Mọi tuyên bố phương pháp trong phần thân của giao diện đều được ẩn công khai. [..]

Trong một lớp thực hiện bạn không được phép để giảm khả năng hiển thị, và bằng cách không chỉ định một modifier truy cập:

void print(){..} 

bạn đang xác định cấp độ truy cập default, trong đó có tầm nhìn thấp hơn public.

2

Biến methode thành công khai trong lớp trong đó giao diện thực hiện, bởi vì trong giao diện theo mặc định mọi phương thức đều công khai và trừu tượng.

Các vấn đề liên quan