一:内部类可直接访问外部类的成员变量,包括外部类私有的成员变量
二:外部类要访问内部类的成员变量,需要建立内部类的对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
class Outer{
int x= 110 ;
public void show(){
System.out.println( "外部类的x=" +x);
}
public void showInner(){
Inner inner= new Inner();
inner.show();
System.out.println(inner.x);
}
class Inner{ //内部类
int x= 220 ;
public void show(){
System.out.println( "内部类的x=" +x);
}
}
}
public class OuterDemo {
public static void main(String[] args) {
Outer outer= new Outer();
outer.show();
outer.showInner();
Outer.Inner outerInner= new Outer(). new Inner(); //特殊情况.外部类直接访问内部类成员变量
outerInner.show();
}
}
|
内部类之所以可以直接访问外部类的成员变量,是因为内部类持有外部类的引用。格式:外部类名.this
如:System.out.println("x="+Outer.this.x);//访问外部类的x
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
class Outer{
int x= 110 ;
class Inner{
int x= 220 ;
public void show(){
int x= 330 ;
System.out.println( "x=" +x); //访问show()中的x
System.out.println( "x=" + this .x); //访问内部类的x
System.out.println( "x=" +Outer. this .x); //访问外部类的x
}
}
void showInner(){
Inner inner= new Inner();
inner.show();
}
}
public class OuterDemo {
public static void main(String[] args) {
Outer outer= new Outer();
outer.showInner();
}
}
|
在内部类(一)和内部类(二)中,内部类都是作为全局变量出现的即定义在了类里 ,在此奖内部类定义为局部变量,即定义在方法里.尤其注意:此时内部类要想访问局部变量,那么此 局部变量必须是被final修饰的,如此处的y
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package cn.com;
class Outer {
int x = 110 ;
public void show() {
final int y= 99 ;
class Inner { // 内部类
int x = 880 ;
public void showInner() {
System.out.println( "局部变量y=" + y);
}
}
new Inner().showInner();
}
}
public class OuterDemo {
public static void main(String[] args) {
Outer outer = new Outer();
outer.show();
}
}
|
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://blog.csdn.net/lfdfhl/article/details/8195036