Java'daki özel görünürlüğün anlambiliminin neden nesne seviyesinden ziyade sınıf seviyesinde olduğu sorusundaki 2 sent.
Rahatlığın burada anahtar rol oynadığını söyleyebilirim . Aslında, nesne düzeyinde bir özel görünürlük, OP tarafından gösterilen senaryoda yöntemleri diğer sınıflara (örneğin aynı pakette) maruz bırakmaya zorlayacaktır.
Gerçekte, sınıf-özel düzeyindeki görünürlüğün (Java'nın sunduğu gibi) nesne-özel düzeyindeki görünürlükle karşılaştırıldığında herhangi bir sorun yarattığını gösteren bir örnek bulamadım ve bulamadım.
Bununla birlikte, daha ince bir görünürlük politikaları sistemine sahip programlama dilleri, hem nesne düzeyinde hem de sınıf düzeyinde nesne görünürlüğü sağlayabilir.
Örneğin Eiffel , seçici dışa aktarma sunar: herhangi bir sınıf özelliğini, seçtiğiniz herhangi bir sınıfa, {NONE} (nesne-özel) 'den {ANY}' e (genel ile eşdeğeri ve ayrıca varsayılan), {PERSON} 'a aktarabilirsiniz. (sınıf-özel, OP'nin örneğine bakın), belirli sınıf gruplarına {KİŞİ, BANK}.
Ayrıca, Eiffel'de bir özelliği özel yapmanıza ve diğer sınıfların ona atamasını önlemek için bir alıcı yazmanıza gerek olmadığını belirtmek de ilginçtir. Eyfel'deki genel özniteliklere varsayılan olarak salt okunur modda erişilebilir, bu nedenle yalnızca değerlerini döndürmek için bir alıcıya ihtiyacınız yoktur.
Elbette bir özniteliği ayarlamak için bir ayarlayıcıya ihtiyacınız vardır, ancak öznitelik için "atayan" olarak tanımlayarak bunu gizleyebilirsiniz. Bu, dilerseniz ayarlayıcı çağrısı yerine daha uygun atama operatörünü kullanmanızı sağlar.