第10章-内部类_new
第10章--内部类_.new
package innerclasses; class SS { public SS() { DotNew dn = new DotNew(); //DotNew.Inner di = dn.new Inner(); //如果其他类的内部类的构造函数是private的, //则只有在这个内部类的外部类中可以使用这个内部类, //其他类是不能实例化这个内部类的 //DotNew.Inner di = dn.new Inner2(); //这样也不行,因为内部类Inner2是private的 } } public class DotNew { public class Inner { private Inner() { } } private class Inner2 { public Inner2() { } } public static void main(String[] args) { DotNew dn = new DotNew(); DotNew.Inner dni = dn.new Inner(); //直接创建 (普通,非static)内部类的对象 必须要有一个外部类对象 //这里 声明dni变量时,变量类型 不需要使用DotNew.Inner 可以直接使用Inner Inner iInner = dn.new Inner(); innerclasses.Inner ii = new innerclasses.Inner(); //当一个类A 和 B在同一个包里面,并且类B有个内部类也叫A, //此时如果使用类A,需要用 包名.A的方式 //就像上面的那样 } }
同一个包内的,与内部类同名的类
package innerclasses; public class Inner { public Inner() { System.out.println("和内部类Inner同名的,同一个包下面的Inner"); } }