2012-02-14 10 views
7

thể trùng lặp:
Why would one declare a Java interface method as abstract?một phương pháp trừu tượng là những gì trên một giao diện trong java

tôi thấy đoạn mã sau vào một trong các giao diện ejb của chúng tôi. Có ai biết những gì trừu tượng nào trong giao diện? Nếu bạn xin vui lòng cũng giải thích tại sao nó có thể là cần thiết hoặc cung cấp một tài liệu tham khảo để đọc về nó =)

@Local 
public interface IDomasOrderProcessor { 

    public abstract void executeOrderLines(List<OrderLine> lines); 
    public abstract void setupJob(List<OrderLine> lines); 
    public abstract void setupJob(OrderLine line); 
} 

Trả lời

16

abstract là không cần thiết trong trường hợp này. Tất cả các phương pháp được xác định trên interfacepublicabstract theo định nghĩa.

Trích Java Language Specification section 9.4

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 hoàn toàn là công khai .

+1

Vì vậy, trong trường hợp này là "công khai". Mà là để nói rằng bạn có thể thả cả hai và nó sẽ làm điều tương tự. Có thể mã ban đầu là lớp trừu tượng đã được cấu trúc lại. – Calum

+1

Thật vậy, 'công khai' là tốt. Tôi đã thêm vào câu trả lời, vì câu trả lời đầu tiên của tôi hơi kỳ cục. – Dev

6

Cả hai publicabstract công cụ sửa đổi đều ẩn trong giao diện và cần tránh.

5

Phương thức trong giao diện công khai và trừu tượng theo định nghĩa. Tôi đã nghe một số người nói rằng họ cảm thấy rằng tuyên bố rõ ràng họ như vậy làm cho nó rõ ràng hơn, nhưng với tôi nó có vẻ như tiếng ồn thêm.

+0

Chắc chắn là tiếng ồn. (Tôi đã thực sự lập trình nhiều năm trong Java trước khi tôi nhận ra rằng 'public' là thừa.) –

2

Theo this tài liệu tất cả các phương pháp interfacepublicabstract, vì vậy không có nghĩa là để xác định một cách rõ ràng abstract phương pháp bên trong interface.