黑马程序员技术交流社区
标题:
外部类的静态方法调用非静态内部类的问题?
[打印本页]
作者:
刘煜
时间:
2012-6-12 16:39
标题:
外部类的静态方法调用非静态内部类的问题?
外部类的静态方法为什么不能直接调用该外部类的非静态内部类?
class Outer
{
class Inner
{
void show()
{
System.out.println("inner Show");
}
}
public static void method()
{
new Inner().show();
}
}
作者:
唐辉辉
时间:
2012-6-12 16:44
静态里不能有非静态存在
作者:
王广丛
时间:
2012-6-12 16:53
其实这里我感觉这样说更容易理解:
main()方法是一个静态代码块,是不依附于类存在可,如你上面的代码,完全可以把main方法换到另外一个类中,
所以我们可以向main()方法在另外一个类中,如果要在这个main()方法中调用你定义的内部类,如果直接这样
new Inner();肯定是找不到报错的。这是就应该明白要先找到包含这个内部类的类,就是你的Demo类,然后再通过
这个类找到内部类Inner,体现在代码上就是,Inner in = new Domo().new Inner();
这个问题主要是理解静态的main()方法是程序的入口是,静态的独立于类存在的。这样就很容易理解为什么要通过外部类来new内部类了
希望能加技术分,急需分数报名考试
作者:
孙峰
时间:
2012-6-12 16:53
这个内部类在成员位置上,同时没有修饰为静态,你外部类中的静态方法当然无法访问,因为静态只能访问静态。
作者:
李月
时间:
2012-6-12 16:59
因为静态随着类的加载而加载,优先于对象存在。首先静态方法先会被加载到内存,对象都没有创建,不存在。静态不能加载。这是我的理解。
作者:
王超
时间:
2012-6-12 17:18
内部类在外部类的成员位置,而外部类的静态成员函数就不能访问内部类的非静态方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2