我使用的编辑器是Notepad++,学习视频:毕向东Java基础教程
//(局部)内部类和外部类的基本运用
class Outer
{
int num = 3; //外部类的成员变量
class Inner1 //非静态内部类
{
int num=4; //内部类的成员变量
void show1()
{
int num =5; //方法中的局部变量
System.out.println("非静态内部类示例: ");
System.out.println("num1: "+num); //打印方法中的局部变量,5
System.out.println("num2: "+this.num); //打印内部类的成员变量,4 相当于Inner.this.num
System.out.println("num3: "+Outer.this.num); //打印外部类的成员变量,3
}
}
static class Inner2 //静态内部类中的成员都是静态的
{
static int num=6; //内部类的成员变量
static void show2()
{
System.out.println("\n静态内部类示例: ");
System.out.println("num4: "+num); //打印静态变量,6
}
}
void method1() //外部类要访问内部类中的成员,必须创建内部类的对象
{
Inner1 in1 = new Inner1();
in1.show1();
}
void method2()
{
final int num= 8; //局部内部类只能访问由final修饰的局部变量
class Inner3 //局部内部类
{
void show3()
{
System.out.println("\n局部内部类示例: ");
System.out.println("num7: "+num); //打印8
}
}
Inner3 in = new Inner3();
in.show3();
}
}
class OuterDemo
{
public static void main(String[] args)
{
//外部类间接访问内部类的成员
System.out.println("\n外部类间接访问内部类的成员\n");
Outer out = new Outer();
out.method1();
//外部类直接访问内部类中的成员
System.out.println("\n外部类直接访问内部类中的成员\n");
Outer.Inner1 in2 = new Outer().new Inner1();
in2.show1();
//内部类是静态的,相当于一个外部类
Outer.Inner2 in3 = new Outer.Inner2();
in3.show2();
//局部内部类
Outer out1 = new Outer();
out1.method2();
}
}
结果显示如下: