Java'da, class
ve interface
oluştururken ve kalıtımla uğraşırken, erişim değiştiricilerinin her birinin, yani varsayılan (package private), public
, protected
ve private
ne zaman kullanılacağına dair net kurallar var mı?
Resmi öğretici işinize yarayabilir.
______________________________________________________________ | │ Sınıf │ Paket │ Alt Sınıf │ Alt Sınıf │ Dünya | | │ │(aynı pkg)│(farklı pkg)│ | |───────────┼───────┼─────────┼──────────┼──────────┼────────| |public │ + │ + │ + │ + │ + | |───────────┼───────┼─────────┼──────────┼──────────┼────────| |korumalı │ + │ + │ + │ + │ | |───────────┼───────┼─────────┼──────────┼──────────┼────────| |Değiştirici yok│ + │ + │ + │ │ | |───────────┼───────┼─────────┼──────────┼──────────┼────────| |özel │ + │ │ │ │ | |___________|_______|_________|__________|__________|________| + : erişilebilir boş : erişilemez
Kolay kural. Her şeyi özel ilan ederek başlayın. Daha sonra ihtiyaçlar ortaya çıktıkça ve tasarım bunu gerektirdikçe kamuya açık hale getirin.
Üyeleri ifşa ederken kendinize temsil seçeneklerini mi yoksa soyutlama seçeneklerini mi ifşa ettiğinizi sorun. Birincisi, gözlemlenebilir davranışından ziyade gerçek temsile çok fazla bağımlılık getireceğinden kaçınmak isteyeceğiniz bir şeydir.
Genel bir kural olarak, alt sınıflama yoluyla yöntem uygulamalarını geçersiz kılmaktan kaçınmaya çalışıyorum; mantığı mahvetmek çok kolay. Geçersiz kılınmasını istiyorsanız soyut korumalı yöntemler bildirin.
Ayrıca, yeniden düzenlediğinizde işlerin bozulmasını önlemek için geçersiz kılarken @Override ek açıklamasını kullanın.