Bu biraz eski bir soru, ama ben bu konu bugün konuşma geldi çünkü ben zaten benim 2 sent katkıda olacağını düşündüm.
Bu tam olarak neden const yok diye cevap vermiyor ? ama sınıflarınızı nasıl değişmez kılarsınız. (Maalesef kabul edilen yanıta yorum yapmak için henüz yeterli itibarım yok)
Bir cisim üzerindeki değişmezliği garanti etmenin yolu, sınıflarınızı değişmez olacak şekilde daha dikkatli bir şekilde tasarlamaktır. Bu değişebilir bir sınıftan biraz daha fazla bakım gerektirir.
Bu Josh Bloch'un Etkili Java Öğesi 15 - Değişebilirliği En Aza İndir'e geri dönüyor . Kitabı okumadıysanız, bir kopyasını alın ve birkaç kez tekrarlayın, çünkü mecazi "java oyununuzu" garanti altına alacaktır .
15. maddede Bloch, nesnenin durumunu sağlamak için sınıfların değiştirilebilirliğini sınırlamanız gerektiğini önerir.
Kitabı doğrudan alıntılamak için:
Değişmez bir sınıf, basitçe örnekleri değiştirilemeyen bir sınıftır. Her örnekte yer alan tüm bilgiler, oluşturulduğunda ve nesnenin ömrü boyunca sabitlendiğinde sağlanır. Java platformu kitaplıkları, String, kutulu ilkel sınıflar ve BigInteger ve BigDecimal dahil olmak üzere birçok değişmez sınıf içerir. Bunun pek çok iyi nedeni vardır: Değişmez sınıfları tasarlamak, uygulamak ve kullanmak değiştirilebilir sınıflardan daha kolaydır. Hataya daha az eğilimlidirler ve daha güvenlidirler.
Bloch daha sonra 5 basit kuralı izleyerek sınıflarınızı nasıl değişmez hale getireceğinizi açıklar:
- Nesnenin durumunu değiştiren herhangi bir yöntem (örneğin ayarlayıcılar, diğer bir deyişle mutasyoncular ) sunmayın
- Sınıfın genişletilemediğinden emin olun (bu, sınıfın kendisini şu şekilde bildirmek anlamına gelir
final
).
- Tüm alanları yapın
final
.
- Tüm alanları yapın
private
.
- Değişebilir bileşenlere özel erişim sağlayın. (nesnelerin savunma kopyalarını oluşturarak)
Daha fazla bilgi için kitabın bir kopyasını almanızı şiddetle tavsiye ederim.
const
anahtar kelime, ancak hiçbir altta yatan özelliği yoktur. Başlığınız ve etiketleriniz buna göre düzeltildi.