class Outer { public Outer() { System.out.println("Outer"); } public class Inner { public Inner() { System.out.println("Inner."); } public void sayHello() { System.out.println("Hello world!"); } } } public class Test { public static void main(String[] args) { Outer.Inner inner = new Outer().new Inner() ; inner.sayHello(); } }
一般来说外部类是不会去直接访问内部类的方法的(main函数除外),因为这么做就丧失了内部类存在的意义。在main中对于内部类函数的调用,有以下几种
静态内部类: 可以通过InnerClass.methodxxx();成员内部类、本地内部类: 可以通过new OutClass().new InnerClass().methodxxx();匿名内部类: 不允许直接调用,
{
public Outer()
{
System.out.println("Outer");
}
public class Inner
{
public Inner()
{
System.out.println("Inner.");
}
public void sayHello()
{
System.out.println("Hello world!");
}
}
}
public class Test
{
public static void main(String[] args)
{
Outer.Inner inner = new Outer().new Inner() ;
inner.sayHello();
}
}