Java中静态内部类和非静态内部类有什么区别?

相似文章:java

Java中静态内部类和非静态内部类有什么区别?this

Java静态内部类.net

public class InnerClassJava {
    private int a;

    public class Inner {
        public void hello() {
            System.out.println(InnerClassJava.this.a);
        }
    }

    public static class Inner2 {
        public void hello2() {
//            System.out.println(InnerClassJava.this.a);
        }
    }

    public static void main(String... args) {
        InnerClassJava innerClassJava = new InnerClassJava();
        Inner inner = innerClassJava.new Inner();
        Inner2 inner2=new Inner2();

        View view = new View();
        view.setOnClickListener(new OnClickListener() {
            public void onClick() {

            }
        });
    }
}

非静态内部类是持有外部类的状态的,所以在它内部能够持有外部类的私有对象,code

而静态内部类不能够,对象

它们的声明也不同:blog

public static void main(String... args) {
        InnerClassJava innerClassJava = new InnerClassJava();
        Inner inner = innerClassJava.new Inner();
        Inner2 inner2=new Inner2();

        View view = new View();
        view.setOnClickListener(new OnClickListener() {
            public void onClick() {

            }
        });
    }