A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© NeXtyin 中级黑马   /  2016-5-8 22:44  /  281 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


创建:内部类的意思就是将类的定义放在另一个类的内部。有时合理的内部类使用会使代码更加简洁,令程序更加巧妙。而且作为外部类的成员,内部类可以访问外部类私有的成员变量。我们先来看看内部类的创建,分这么几种情况:
1、在外部类的非静态方法中创建内部类的实例。
[java] view plain copy
public class InnerClass {  
    class A{  
        int a = 10;  
        void b(){  
            System.out.println("this is A.b()!");  
        }  
    }  
      
    void build(){  
        A a = new A();  
        a.b();  
    }  
      
    public static void main(String[] args) {  
        InnerClass ic = new InnerClass();  
        ic.build();  
    }  
}  
2、在外部类的静态方法中创建内部类的实例。
当在外部类的静态方法中创建内部类时,当内部类是静态的:
[java] view plain copy
public class InnerClass {  
    static class A{  
        int a = 10;  
        void b(){  
            System.out.println("this is A.b()!");  
        }  
    }  
      
    public static void main(String[] args) {  
        InnerClass.build();  
    }  
      
    static void build(){  
        A a = new A();  
        a.b();  
    }  
}  
当内部类是非静态的:
[java] view plain copy
public class InnerClass {  
    class A{  
        int a = 10;  
        void b(){  
            System.out.println("this is A.b()!");  
        }  
    }  
      
    public static void main(String[] args) {  
        InnerClass ic = new InnerClass();  
        InnerClass.A aa = ic.new A();  
        aa.b();  
    }  
}  
3、在内部类的非静态方法中创建外部类的实例。(使用外部类.this来创建外部类的实例)
[java] view plain copy
public class InnerClass {  
    class A{  
        int a = 10;  
        void build(){  
            InnerClass ic = InnerClass.this;  
            ic.a();  
        }  
    }  
      
    void a(){  
        System.out.println("this is InnerClass.a()!");  
    }  
}  
4、在内部类的静态方法中创建外部类的实例。(直接通过new来创建)
[java] view plain copy
public class InnerClass {  
    static class A{  
        int a = 10;  
        static void build(){  
            InnerClass ic = new InnerClass();  
            ic.a();  
        }  
    }  
      
    void a(){  
        System.out.println("this is InnerClass.a()!");  
    }  
}  

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马