黑马程序员技术交流社区
标题:
基础班的一道练习题,静态的主函数里面不能new对象么?
[打印本页]
作者:
pancl
时间:
2014-5-16 13:19
标题:
基础班的一道练习题,静态的主函数里面不能new对象么?
这是基础班的一个练习题:老师说B选项错误的原因是主函数是静态的,不能在里面new对象。不能理解。
class Demo
{
public void func()
{
//位置1;
new Inner();
}
class Inner{}
public static void main(String[] args)
{
Demo d=new Demo();
// 位置2
new Inner();//不可以,因为主函数是静态的。如果访问inner需要被static修饰。
}
}
A.在位置1写 new Inner();//ok
B.在位置2写 new Inner();
C.在位置2写 new d.Inner();//错误,格式错误。 new new Demo().Inner();
D.在位置2写 new Demo.Inner();//错误,因为inner不是静态的。
通常写程序不是经常在主函数里new对象吗?这里的B选项为什么就不行呢?谢谢了
作者:
lwy0319
时间:
2014-5-23 23:45
Inner是内部类,在这里属于内部的非静态成员,与你定义一个int a=10;是一样的,而一个类的内部非静态成员是无法在静态类中调用的
作者:
塔罗
时间:
2014-5-31 09:05
能理解D选项不对,不能理解B?Inner 是非静态的内部类。所以不可以直接被类名调用。那么静态的方法中肯定也不能调用非静态的成员位置的内部类
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2