Java|java非静态内部类的使用

Java|java非静态内部类的使用

/**
* 测试非静态内部类的使用
* 内部类分为成员内部类、匿名内部类和局部内部类 , 成员内部类分为非静态内部类和静态内部类
* 编译后内部类和外部类会分成两个class文件 外部类名.class和 外部类名$内部类名.class
*/
public class Outer1 {
private int age = 5;
public void pr(){
System.out.println(\"Outer.pr\");
System.out.println(age);

public int speed = 20;
public class Inner1{
//内部类四种封装都可以使用
int age = 12;
public void pr(){
System.out.println(\"Inner.pr\");
System.out.println(age);
//调用的是Inner1的age 即this.age
System.out.println(Outer1.this.age);
//调用Outer1的age this不可省略
【Java|java非静态内部类的使用】Outer1.this.pr();
//调用Outer1的pr()方法 this不可省略
System.out.println(speed);
//内部类中没有定义speed时会调用 Outer1.this.speed



public class TestInner {
public static void main(String[
args) {
Outer1 o1 = new Outer1();
Outer1.Inner1 i1 = new Outer1().new Inner1();
//内部类对象需要通过外部类对象new
//外部类.内部类
//非静态内部类就像外部类的成员变量 需要通过外部类的对象调用 必须用对象调对象
i1.pr();