Trước hết, có sự khác biệt giữa mô hình OOP và triển khai OOP trong Java , vì vậy những từ giống nhau có thể có nghĩa hơi khác nhau.
Trong OOP, giao diện mô hình là những gì bạn có thể làm với đối tượng (hoặc đối tượng có thể làm gì cho bạn ). Bất kỳ đối tượng nào cũng có thể có một số giao diện và do đó đóng các vai trò khác nhau. Ví dụ, một người nào đó có thể làm việc như một lập trình viên và có thể tạo ra các chương trình, nhưng đồng thời anh ta có thể là một người chồng, người cha và do đó có thể trả các hóa đơn cho gia đình và chăm sóc con cái. Ở đây "lập trình viên", "chồng" và "cha" là các giao diện, và một người là một đối tượng thực hiện chúng. Lưu ý rằng các giao diện không ngụ ý sự hiện diện của bất kỳ tính năng (trường) cụ thể nào để triển khai đối tượng, chỉ là các hành động mà đối tượng này có thể thực hiện.
Java ít nhiều tuân theo ý tưởng này, nhưng như bất kỳ triển khai mô hình nào cũng có các tính năng riêng của nó. Java cho phép mô tả các phương thức, đó là các hành động mà đối tượng triển khai có thể thực hiện, nhưng không phải bất kỳ chi tiết triển khai nào, do đó, không có gì về các trường đối tượng hoặc các phương thức riêng.
Nhưng những gì về hằng số ( public final static
trường)? Chúng là một phần của quá trình thực hiện hay giao diện. Nó có thể là cả hai. Ví dụ: giao diện "lập trình viên" có thể WORK_HOURS
đặt hằng số thành "8". Do đó, Java cũng cho phép bạn mô tả các hằng số trong các giao diện.
Lưu ý rằng Java chỉ giúp bạn thiết kế OOP tốt, nhưng nó không đòi hỏi nhiều. Đặc biệt, không phải tất cả các phương thức công khai của một đối tượng cũng nên tồn tại trong giao diện. Ví dụ, các phương thức getter và setter thường là công khai, nhưng trên thực tế, chúng là một phần của việc triển khai , không phải giao diện, và do đó, không nên đưa chúng vào giao diện.
(Cũng xin lưu ý rằng hầu hết những điều tôi mô tả ở đây là về OOP chính thống như trong Java, nhưng cũng có những loại OOP khác như OOP dựa trên nguyên mẫu, cụ thể là được triển khai trong JavaScript).