2012-01-09 57 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