问题,见下面的代码注释.
多谢赐教.interface TestInterface
{
void test();
}class OutterClass
{
class CommInnerClass implements TestInterface //普通内部类
{
public void test()
{
System.out.println("This is Common Inner Class.");
}
}
static class StaticInnerClass implements TestInterface //静态内部类
{
public void test()
{
System.out.println("This is Static Inner Class.");
}
}
}
public class TestInnerClass
{
public static void main(String[] args)
{
OutterClass oc = new OutterClass(); //一个外部类对象
OutterClass.CommInnerClass commInnerClass = oc.new CommInnerClass();
//创建普通内部类,必须要要有一个外部类的对象,然后用外部类对象.new的形式创建内部类对象
OutterClass.StaticInnerClass staticInnerClass = new OutterClass.StaticInnerClass();
//而创建静态内部类,必须用new OutterClass.StaticInnerClass(); 这种方式
//staticInnerClass = new oc.StaticInnerClass(); //用这种方式反而不行,为什么不行?
}
}
多谢赐教.interface TestInterface
{
void test();
}class OutterClass
{
class CommInnerClass implements TestInterface //普通内部类
{
public void test()
{
System.out.println("This is Common Inner Class.");
}
}
static class StaticInnerClass implements TestInterface //静态内部类
{
public void test()
{
System.out.println("This is Static Inner Class.");
}
}
}
public class TestInnerClass
{
public static void main(String[] args)
{
OutterClass oc = new OutterClass(); //一个外部类对象
OutterClass.CommInnerClass commInnerClass = oc.new CommInnerClass();
//创建普通内部类,必须要要有一个外部类的对象,然后用外部类对象.new的形式创建内部类对象
OutterClass.StaticInnerClass staticInnerClass = new OutterClass.StaticInnerClass();
//而创建静态内部类,必须用new OutterClass.StaticInnerClass(); 这种方式
//staticInnerClass = new oc.StaticInnerClass(); //用这种方式反而不行,为什么不行?
}
}
非static与对象实例相关
2)对象不能调用内部静态构造方法,是因为内部静态类不属于对象
ps:newinstance.method() 表明此方法是属于这个对象的,但是如果这个method() 是构造方法,表明构造出来的对象依赖于 newinstance ,显然静态内部类不依赖于具体对象
静态内部类就相当于一个静态的特殊属性,可以不通过实例调用
非静态内部类就相当于一个非静态的特殊属性,需要通过实例调用
OutterClass.CommInnerClass commInnerClass = oc.new CommInnerClass(); //所以这里需要实例oc
OutterClass.StaticInnerClass staticInnerClass = new OutterClass.StaticInnerClass(); //这里不需要实例