public class InnterClass {
/**
* 1.创建一个非静态的内部类的对象,要先创建外部类的对象,然后在创建内部类的对象
* 2.创建一个静态的内部类的对象,可以直接外部类.内部类就可以创建内部类的对象
*/
private static final int x = 1;
private static int y = 2;
private int z = 3;
public void fun() {
final int x = 1;
//函数体内的内部类不能是static的
class Innter2 {
void ff() {
//要想访问函数体内部的变量,就要在函数体变量的前面加上final关键字
System.out.println(x);
//可以访问外部类的静态成员和非静态成员
System.out.println(y);
System.out.println(z);
}
}
}
//外部内部类可以是4种访问权限里的任何一个
class Innter2 {
public void print() {
//非static内部类可以访问外部类的静态和非静态成员
System.out.println(y);
System.out.println(z);
}
}
static class Innter1 {
public void print() {
System.out.println(y);
}
//静态内部类可以访问外部类的静态成员
private void f() {
System.out.println(x);
//System.out.println(z);//静态内部类不能访问外部类的非静态成员
}
}
}