Di Jawa, ada empat pengubah akses yang tersedia untuk metode:
public
- kelas apa pun dapat menggunakan metode ini.
protected
- kelas dalam paket yang sama dan subclass dalam paket apa pun dapat menggunakan metode ini.
private
- hanya kelas ini yang bisa menggunakan metode ini.
no modifier
("paket pribadi") - hanya kelas dalam paket yang sama yang dapat menggunakan metode ini.
Yang sering terjadi adalah saya ingin memiliki metode yang berguna dalam superclass, yang dapat digunakan semua subclass. Tetapi tidak masuk akal bagi kelas lain untuk mengakses metode ini, dan dalam arti itu akan memecah enkapsulasi.
Jadi saya harus mendeklarasikan metode yang berguna ini di superclass public
atau protected
, yang memaparkannya ke semua kelas lain setidaknya dalam paket. Meskipun mereka hanya dimaksudkan untuk digunakan oleh subclass.
Apakah ada alasan mengapa tidak ada subclasses-only
pengubah akses di Java? Sepertinya sangat aneh bagi saya. Apakah saya melewatkan sesuatu?
Juga, subclasses-only
pengubah akses juga akan berguna ketika Anda ingin mengekspos variabel hanya ke subclass. Yang menurut saya sering terjadi.