一、内部类作为类的成员
1.如果内部类是静态的
该内部类访问外部类的成员:只能访问外部static标识的成员。
该内部类方法访问内部类的成员:无限制。
2.如果内部类是非静态的
没什么限制。只是内部类中定义的变量不能再用static修饰了,这与static method内部定义int i = 2;但是 method 方法中不能定义static int i = 2是一个道理。
二、方法中定义内部类
该内部类访问外部类的成员能否取决于该方法是否是static的,如果是static,则只能访问外部类中的static变量;如果不是static,则可以访问。
该内部类访问方法中定义的成员:只能访问方法中final标识的成员。
代码:
package edu.text;
public class Outer {
private int int1 = 1;
private static int int2 = 2;
private final int int3 = 3;
public void say(){
String str1 = "str1";
final String str2 = "str2";
class Inner2{
String str3 = "str3";
final String str4 = "str4";
void speakChinese() {
System.out.println(int1);
System.out.println(int2);
System.out.println(int3);
//System.out.println(str1);//error
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
}
}
}
class Inner1{
private int int4 = 4;
// private static int int5 = 5;//error
private final int int6 = 6;
public void eat(){
System.out.println(int1);
System.out.println(int2);
System.out.println(int3);
System.out.println(int4);
System.out.println(int6);
}
}
}