java局部内部类中的变量和方法中变量重名
时间: 2024-04-24 14:26:10 浏览: 122
[面试/笔试系列3]局部变量能否和全局变量重名
5星 · 资源好评率100%
在Java的局部内部类中,如果变量和外部方法中的变量重名,会产生命名冲突。在这种情况下,内部类会优先使用自己的变量,而不是外部方法中的变量。
以下是一个示例代码:
```java
public class OuterClass {
private int num = 10;
public void outerMethod() {
int num = 20;
class InnerClass {
private int num = 30;
public void innerMethod() {
int num = 40;
System.out.println("内部类中的num:" + num); // 输出40
System.out.println("内部类中访问外部类的num:" + OuterClass.this.num); // 输出10
}
}
InnerClass inner = new InnerClass();
inner.innerMethod();
}
}
```
在这个例子中,`OuterClass` 是外部类,`InnerClass` 是局部内部类。`OuterClass` 中有一个实例变量 `num` 和一个方法 `outerMethod()`。在 `outerMethod()` 方法中,定义了一个局部变量 `num`。
在 `InnerClass` 的 `innerMethod()` 方法中,也定义了一个局部变量 `num`。当访问这个变量时,会优先使用内部类中的变量,即输出结果为 `40`。如果要访问外部方法中的变量,可以使用 `外部类名.this.变量名` 的方式,如 `OuterClass.this.num`。
总结来说,在局部内部类中,如果变量和方法中的变量重名,会产生命名冲突,内部类会优先使用自己的变量。如果需要访问外部方法中的变量,可以使用 `外部类名.this.变量名` 的方式来引用。
阅读全文