内部类实例创建
- public class OuterClass {
- public static void main(String[] args) {
- OuterClass outerClass = new OuterClass();
- InnerClass innerClass = outerClass.new InnerClass();
- StaticInnerClass staticInnerClass = new StaticInnerClass();
- }
- public void foo() {
- InnerClass innerClass = new InnerClass();
- StaticInnerClass staticInnerClass = new StaticInnerClass();
- }
- public class InnerClass {
- }
- public static class StaticInnerClass {
- }
- }
1:非静态内部类,必须有一个外部类的引用才能创建。
2:在外部类的非静态方法中,因为有隐含的外部类引用this,所以可以直接创建非静态内部类。
3:在外部类的静态方法中,因为没有this,所以必须先获得外部类引用,然后创建非静态内部类。
4:静态内部类,不需要外部类引用就可以直接创建。
5:同时静态的内部类,也不能直接访问外部类的非静态方法。
6:由此可以推测,非静态内部类之所以可以直接访问外部类的方法,是因为创建非静态内部类时,有一个隐含的外部类引用被传递进来。