欢迎光临散文网 会员登陆 & 注册

非静态内部类的使用

2022-06-26 19:36 作者:虚云幻仙  | 我要投稿

/**
* 测试非静态内部类的使用
* 内部类分为成员内部类、匿名内部类和局部内部类,成员内部类分为非静态内部类和静态内部类
* 编译后内部类和外部类会分成两个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不可省略
           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();
   }
}

非静态内部类的使用的评论 (共 条)

分享到微博请遵守国家法律