Trong Java, có bốn công cụ sửa đổi truy cập có sẵn cho các phương thức:
public
- bất kỳ lớp nào cũng có thể sử dụng phương pháp này.
protected
- các lớp trong cùng một gói và các lớp con trong bất kỳ gói nào có thể sử dụng phương thức này.
private
- chỉ có lớp này có thể sử dụng phương pháp này.
no modifier
("gói riêng") - chỉ các lớp trong cùng một gói có thể sử dụng phương thức này.
Điều thường xảy ra là tôi muốn có các phương thức hữu ích trong một siêu lớp, mà tất cả các lớp con có thể sử dụng. Nhưng nó sẽ không có ý nghĩa đối với các lớp khác để truy cập phương thức này và theo một nghĩa nào đó, nó sẽ phá vỡ sự đóng gói.
Vì vậy, tôi phải khai báo các phương thức hữu ích này trong lớp cha public
hoặc protected
, chúng hiển thị chúng cho tất cả các lớp khác ít nhất là trong gói. Mặc dù chúng chỉ được sử dụng bởi các lớp con.
Có một lý do tại sao không có một công cụ subclasses-only
sửa đổi truy cập trong Java? Nó có vẻ rất kỳ lạ với tôi. Tui bỏ lỡ điều gì vậy?
Ngoài ra, một công cụ subclasses-only
sửa đổi truy cập cũng sẽ hữu ích khi bạn muốn chỉ hiển thị các biến cho các lớp con. Mà với tôi xảy ra rất nhiều.