2011-01-27 13 views
10

Bunu nasıl başarabilirim?Üye değişkeni ve yerel yöntem değişkeni aynı ada sahip olabilir mi?

class Test { 
    private int var1; 

    public Test(int var1) { 
     var1 = var1; //set the member variable to what was passed in 
    } 
} 

Eminim ki çok açık bir cevap var. Sadece şu an kaçıyor.

+0

Bazı iyi kodlara bakın. Tam olarak bunu göreceksiniz ('this.x = x') setler ve kurucular için kullanılır. Yeni bir isim icat etmenin anlamı yok. – maaartinus

cevap

19

Evet, aynı adı paylaşabilirler. Ancak, örnek değişkeni referans, sen this öneki kullanmanız gerekir:

public Test(int var1) { 
    this.var1 = var1; 
} 
+1

Yani "bu" normalde isteğe bağlı mı? Ama bu durumda, isimler uyuşmazlığından beri ona ihtiyacım var? Bunu doğru anlıyor muyum? – Greg

+1

@Greg - tam olarak. –

+2

Bu durumda, buna ihtiyacınız yok * çünkü adlar çakışırsa, JVM'ye referansı farklı (özel) bir kapsamdan almasını söyleyin. "Süper." Benzer şekilde çalışır, ancak değişken/yöntemi, genişletmekte olduğunuz sınıftan alır (daha büyük bir "kapsam"). Bazı diller bir "küresel" bile sunabilir. değiştirici, ancak Java değil. – Dolph

2

Evet, evet. ama sadece "yapabilir". bu iyi değil.

+3

-1 "iyi değil" yardımcı olmaz. Ayrıca, bu * nin * "iyi" olduğu ortak desenler vardır. – Dolph

+0

İfadelerimi farkedeceğim. umarım insanlar cevabımda ne demek istediğimi bilirler .. –

+2

Cevabınız ile ne kastettiğinizi bilmiyorum? – jzd

4

Evet yapabilirsiniz, ancak yerel değişken sınıf değişkeni gizler.

İlgili konular