1、在外部类以外的地方定义内部类(包括静态和非静态)格式:
OuterClass.InnerClass varName
2、由上得出内部类的完整的全名是OuterClass.InnerClass
3、在外部类以外的地方创建非静态内部类实例格式:
OuterInstance.new InnerConstructor()
例:
- class Out
- {
- //定义一个内部类,不使用访问修饰符,即只有同一个包中的其他类可访问该内部类
- class In
- {
- public In(String msg)
- {
- System.out.print(msg);
- }
- }
- }
- public class CreateInnerInstance
- {
- public static void main(String[] args)
- {
- Out.In in = new Out().new In("测试信息");//创建非静态内部类对象(非静态内部类的构造器必须使用外部类对象来调用)
- /*
- 上面代码可改为如下三行代码:
- 使用OutterClass.InnerClass的形式定义内部类变量
- Out.In.in
- 创建外部类实例,非静态内部类实例将寄存在该实例中
- Out out = new Out();
- 通过外部类实例和new来调用内部类构造器创建非静态内部类实例
- in = out.new In("测试信息");
- */
- }
- }
在外部类以外的地方创建静态内部类:
- public StaticOut
- {
- static class StaticIn
- {
- public StaticIn()
- {
- System.out.println("静态内部类的构造器");
- }
- }
- }
- public class CreateStaticInnerInstance
- {
- public static void main(String[] args)
- {
- StaticOut.StaticIn in = new StaticOut.StaticIn();
- }
- }
静态内部类只需使用外部类即可调用构造器,而费静态内部类必须使用外部类对象调用构造器。
转载于:https://blog.51cto.com/chengxuyuan/1013185