关于方法内部类的变量问题
在这种程序中有三层变量,分别是外部类中声明的成员变量、外部类的方法中的局部变量、该方法中的方法内部类中声明的该类的成员变量;
假设在该方法内部类中的方法对这三层变量都要调用:
1。要是这些变量都没有重名的,如何调用?
2、要是这三层的变量中都有重名的,如何调用并区分开?
在这种程序中有三层变量,分别是外部类中声明的成员变量、外部类的方法中的局部变量、该方法中的方法内部类中声明的该类的成员变量;
假设在该方法内部类中的方法对这三层变量都要调用:
1。要是这些变量都没有重名的,如何调用?
2、要是这三层的变量中都有重名的,如何调用并区分开?
2015-10-05
根据之前看到的关于成员变量和局部变量的介绍中我还看到了这样一句话“局部变量是在类的方法中定义,在方法中临时保存数据”,也就是说这个方法中的变量是临时性的,还有我看了其他人关于这方面的解答,他们是这样说的“
方法中的变量是一个局部变量,局部变量是储存在栈内存中,当方法结束后(弹栈),这个变量就消失了(方法就消失了),所以内部类可能没办法读取到这个变量.顺便说下 如果你完全是自己照着imooc里面的教程学的,你估计看不懂我说的,因为imooc到第二季还没提到过内存方面的内容.(我也是不懂,自己找资料学的)”
我想他的意思也就是那个方法中的变量可能就是一个临时变量,数据不能一直保存,所以方法内部类无法调用吧,我是这么理解的,希望能帮到你。
。。这是我自己在eclipse上面尝试的结果
package com.shiyan2;
import com.shiyan3.Test.Inner;
public class Shiyan {
/* //普通方法中的内部类的调用
static int a=2; //可以通过(Shiyan.this.a)和(Shiyan.a)和(new Shiyan().a)调用;要是没有相同的还能用(a)来调用
int b=7; //普通变量 可以通过(Shiyan.this.b)和(new Shiyan().b)来调用;要是没有相同的话可以用(b)来调用;
public void print(){
int b=2; //方法中的变量不能设为public
//该如何调用??????????
class Inner{
public int c=4; //方法内部类中的成员变量可以设置为public
public int b=6; //(this.b)和(new Inner().b)来调用
public void print(){
int d=4;
int c=5;//为什么默认的friendly可以,更加私有的private不可以,只能用final????????
System.out.println(new Shiyan().a);
System.out.println(Shiyan.this.b);
System.out.println(this.c);
System.out.println(d);
}
}
Inner in=new Inner();
in.print();
}*/
/*//静态方法中的内部类 注:内部类中的方法只能是普通方法
public int a=1; //只能(new Shiyan().a)来调用
public static int A=3;//(Shiyan.A)和(new Shiyan().A)和(Shiyan.this.A) 要是没有相同的还能用(A)
public static void print(){
int b=2; //位移的变量形式,要么设为final常量
//要是有相同的b,如何取这个b的值??????????????????
class Inner{
public int c=8; //只能是普通方法
//(this.c)和(new Inner().c)来调用;要是没有相同的,还能(c);
public void print(){ //只能是普通方法,静态方法就会报错!
int d=4; //唯一的变量形式,理由跟上面的b相同
int c=4;
System.out.println(Shiyan.this.A); //为什么可以用?
System.out.println(b);
System.out.println(this.c);
System.out.println(d);
}
}
Inner in=new Inner();
in.print();
}
*/
//测试类
/*
public static void main(String[] args) {
Shiyan test=new Shiyan();
test.print();
}*/
}
举报