Java学习笔记Day14:内部类

实例内部类

  • 不能有静态的数据成员

  • 如何拿到内部类对象

class OuterClass {
    public int data1 = 10;
    public static int data2 = 20;
    class InnerClass {
        public int data1 = 100;
        public int data2 = 999;
        public InnerClass() {
            System.out.println("InnerClass()");
        }
        public void func() {
            System.out.println("data2:"+data2);
            System.out.println("data1:"+this.data1);
        }
    }
    public static void main(String[] args) {
        OuterClass o = new OuterClass();
     	OuterClass.InnerClass in  = o.new InnerClass();
     	in.func();
}

面试题:
实例内部类是否拥有外层类对象/是否有额外的开销?
是,内部类通过外部类名.this.方法名()

静态内部类

  • 类名前加static
  • 静态内部类不能直接访问外部内部类的非静态数据成员,但是可以间接访问
OuterClass.InnerClass in=new OuterClass.InnerClass();

匿名内部类

class MyThread{
}
public static void main(String[] args){
    new MyThread(){
        public void func(){
            System.out.println("hello");
        }
    }.func();
    }
}

本地内部类

发布了67 篇原创文章 · 获赞 12 · 访问量 1508

猜你喜欢

转载自blog.csdn.net/qq_42174669/article/details/103412360
今日推荐