2012-01-09 69 views
4

如果我聲明一個變量是私有的,我可以用另一種方法重新聲明它嗎?用Java中的訪問修飾符重新聲明變量

這很關鍵,因爲我使用Netbeans來生成我的GUI代碼,並且每次都使用相同的變量名稱。有什麼方法可以避免必須更改每個變量?

ADDITION/EDIT:這是否也適用於方法本身?對象如何?

+1

你能粘貼你的代碼嗎?當這個變量存在時,變量不能被重新聲明 – 2012-01-09 16:23:23

+0

好的,它將被編輯。等等,你的意思是整個代碼?因爲那意味着超過2000行... – 2012-01-09 16:26:13

+0

不,我認爲沒問題,我不確定要理解你的問題,但是下面的答案是好的。 – 2012-01-09 16:27:59

回答

2

方法中的局部變量不能用可見性修飾符聲明(public,private,或默認值),只有類的屬性可以使用這些修飾符。

您可以在不同方法中重複使用相同的變量名稱,這不會導致衝突。這是一個很好的做法,即將名稱與具有不同名稱的方法中的局部變量命名爲類的屬性。爲了使自己清楚:

public class Test { 

    private String attribute1; // these are the attributes 
    private String attribute2; 

    public void method1() { 
     String localVariable1; // variables local to method1 
     String localVariable2; 
    } 

    public void method2() { 
     String localVariable1; // it's ok to reuse local variable names 
     String localVariable2; // but you shouldn't name them attribute1 
           // or attribute2, like the attributes 
    } 

} 
+0

因此,如果兩個方法具有相同名稱的變量,它們的值可以不同? – 2012-01-09 16:27:32

+0

好的,這回答我的問題,謝謝你這麼多! – 2012-01-09 16:29:22

+0

@CodeAdmiral,請考慮接受答案:)(將支票標記在左邊) – 2012-01-09 16:30:27

3

一個局部變量和一個私人實例變量,即使具有相同的名稱,是兩個不同的變量。這是允許的。局部變量隱藏實例變量。訪問一個隱藏的實例變量的唯一方法是用this.

2

這是有效的前綴它,如果這是你指什麼:

public class Experiment { 

    private int test; 

     public void again() 
     { 
      int test ; //the local variable hides the previous one 
     } 

} 
+0

一些什麼,但一個很好的答案+1 – 2012-01-09 16:29:01

1

考慮以下

public class Example { 

    private String outerString = "outer"; 

    public void exampleMethod(){ 
    String outerString = "inner"; 
    System.out.println(outerString);  // prints "inner" 
    System.out.println(this.outerString); // prints "outer" 
    } 
} 

的方法外部的變量被方法內具有相同名稱的變量遮蔽。這種事情很沮喪,因爲很容易混淆。你可以閱讀更多herehere