我觉得你这个问题就是个语法问题,没有为什么的。
你可以这样理解new o.Inner().function()是指用一个实例的内部类,不是用一个类的内部类,所以语法受限
属性名可以点出来,方法是不可以是。非静态类了需要new一个对象后。用实例名字.method()才可以的。
import my.Outter.Inner;
public class OuterClassTest {
public static void main(String[] args ){
//Outter.Inner in = o.new Inner();
new Inner().function(); //这而为什么不能写成 new o.Inner().function();?
}//outter是main的内部类,没必要new的
} class Outter{
int a = 20;
static class Inner{
int a = 10;
void function(){
int a =5;
System.out.print("inner"+a);
}
}
}
静态内部类只属于该外部类的类本身,不能被外部类的实例初始化
内部类可以直接调用,就像内部变量一样,不需要new;