Java'da Örnek Alan Bildirimi

Ben sadece OOP'u asıyorum ve Java ile çok uğraştım. Sahip olduğum sıkıntılardan biri, belirli bir sınıf için özel bir örnek alana ihtiyacım olup olmadığına karar vermektir. Özel bir örnek alan yapmam gerekip gerekmediğine dair kullanmam gereken bir kural var mı?

Teşekkürler.

0

4 cevap

Kendinize, nesnenin bir örneğinin mantıksal olarak durumu 'nın bir parçası olup olmadığını sorun. Nesnenin tüm ömrü boyunca geçerli olan nesne ile ilgili bir şey mi, yoksa sadece tek bir yöntemin uygulanması sırasında geçerli olan bir şey mi (bu durumda yerel bir değişken olması gerekir)? Veya aslında sınıfın kendisi için geçerli midir (bu durumda statik olması gerekir)?

Tam olarak emin olmadığınız bazı örnekler verebilirseniz, bu yardımcı olur.

(Buradaki seçimin, statik, örnek veya yerel değişken türünün olduğunu varsaydığımı unutmayın. Örnek değişkenler hemen hemen her zaman özel olmalıdır :)

1
katma

Nesnenin doğal bir parçasıysa veya nesnenin belirli bir görevi düzenli olarak gerçekleştirmesi gerekiyorsa, o zaman onu bir özellik haline getirin. Eğer bir sabit ise, o zaman bunu bir genel sınıf değişkeni yapmalısınız (ya da bir sabit: P). Yani, "kamu statik final w/e" ilan

Genel örnek değişkenler sık ​​sık kullanılmaz, çünkü bu genellikle mesajlaşmaya neden olur. Örnek değişkenlerin (veya özniteliklerin) nesne durumu olarak daha önce belirtildiği gibi düşünün. Nesneleri devlet etrafında değiştirmek yerine, üzerinde işlem gerçekleştirerek nesne durumunu değiştirmek daha nettir. İyi şanslar.

1
katma

"Avoid public fields except for constants. (Many of the examples in the tutorial use public fields. This may help to illustrate some points concisely, but is not recommended for production code.) Public fields tend to link you to a particular implementation and limit your flexibility in changing your code." Controlling Access to Members of a Class

0
katma

Nesne yönelimli programlama öğrenirken, gerçek dünya kavramlarını kod olarak modellemenin bir yolu olarak düşünün. İsimler nesne olur; ve isimler üzerine yapılan eylemler yöntem haline gelir. Örnek değişkenler bu isimlerin özellikleridir. Örneğin, Araç 'u temsil eden bir sınıfınız varsa, slamOnTheBreaks() , Driver ' un molalarda çarpışmayı gerektireceği bir yöntem olur ve Araba 'un içinde birkaç koltuk var, değil mi? Böylece bir örnek değişkeni int numberOfSeats; olur.

Örnek değişkenleri bilmesi gereken, değişiklik ihtiyacı olan bir temele göre düşünün. numberOfSeats öğesini genel olarak yaparak, Sürücü 'nin araçtaki koltuk sayısını değiştirmesine izin verir. Sadece araca kaç tane koltuk koyduğunu, arabaya ne zaman ulaştıklarını öğrenebilirler ya da public int getNumberOfSeats() yöntemini çağırmalıdırlar.

Danny'nin dediği gibi, hikaye sabitler için farklıdır. Bir değer bir sabit ise, programın yürütme süresinin tamamı boyunca sabit kalır, örneğin Sürücü Bob 'unun sadece Driver olmasını istiyorsanız Araç ve Kamyon oluşturduğunuz nesneler, Bob daha iyi olabilirdi.) erişilebilir, herkese açık, yani her içinde olabilir ve Kamyon ( Araç ve Kamyon arasında herhangi bir miras almadıkça) ve b.) değiştirilemez.

0
katma