java语言基础(48)——局部内部类访问外部成员和局部成员
2017-05-13 22:37
295 查看
局部内部类若是访问外部类的成员可以直接访问,若是访问局部变量,则变量必须用final修饰,也就是必须是常量。
原因:因为局部变量是随着方法的调用而存在,随着方法的调用结束而消失。如果但是局部内部类创建出的对象不会立即消失,如果它使用的局部变量消失了,就回产生问题。所以访问常量就无所谓了,因为常量在编译的时候,会替换成具体的内容。
上代码:
class Outer
{
public int num = 10;
public void method(){
final int num2 = 20;
class Inner
{
public void show(){
//输出10 可以直接访问外部成员
System.out.println(num);
//输出20 只能访问final修饰的局部变量
System.out.println(num2);
}
}
Inner i = new Inner();
i.show();
}
}
class InnerClassTest
{
public static void main(String[] args){
Outer o = new Outer();
o.method();// 10 20
}
}
原因:因为局部变量是随着方法的调用而存在,随着方法的调用结束而消失。如果但是局部内部类创建出的对象不会立即消失,如果它使用的局部变量消失了,就回产生问题。所以访问常量就无所谓了,因为常量在编译的时候,会替换成具体的内容。
上代码:
class Outer
{
public int num = 10;
public void method(){
final int num2 = 20;
class Inner
{
public void show(){
//输出10 可以直接访问外部成员
System.out.println(num);
//输出20 只能访问final修饰的局部变量
System.out.println(num2);
}
}
Inner i = new Inner();
i.show();
}
}
class InnerClassTest
{
public static void main(String[] args){
Outer o = new Outer();
o.method();// 10 20
}
}
相关文章推荐
- java语言基础(47)——成员内部类访问外部类的成员(类名.this范围限定)
- Java基础-内部类-为什么成员内部类可以无条件访问外部类
- Java匿名内部类可以访问外部类的成员;若访问所在方法的成员,那个成员必须具有final属性
- Java基础笔记 – 内部类 静态内部类 成员内部类 局部内部类 匿名内部类anonymous inner classes
- JavaSE8基础 内部类可以访问外部类的私有成员
- JAVA基础再回首(八)——多态、(成员、局部、匿名)内部类
- 深入理解Java中为什么内部类可以访问外部类的成员
- 深入理解Java中为什么内部类可以访问外部类的成员
- Java-内部类(三)成员内部类就应该访问外部类的成员!!
- 深入理解Java中为什么内部类可以访问外部类的成员
- Java基础-内部类-为什么局部和匿名内部类只能访问局部final变量
- java语言基础(36)——面向对象(多态的代码体现以及成员之间的访问关系)
- Android(java)学习笔记150:为什么局部内部类只能访问外部类中的 final型的常量
- 深入理解Java中为什么内部类可以访问外部类的成员
- 深入理解Java中为什么内部类可以访问外部类的成员
- 深入理解Java中为什么内部类可以访问外部类的成员
- Java基础_内部类、静态内部类、成员内部类、局部内部类、匿名内部类 (转)
- 深入理解Java中为什么内部类可以访问外部类的成员
- 深入理解Java中为什么内部类可以访问外部类的成员
- Java基础_内部类、静态内部类、成员内部类、局部内部类、匿名内部类 (转)