2 heroh3 heroh3 于 2013.12.01 17:41 提问

java内部类实例化错误

请帮我看看下面出错的原因是什么?(粗体字部分)
为什么静态方法里不能直接调用内部类,成员方法却可以?

package com.zcl5;

class Quetion1 {
class ATM {
int myMoney = 100;
int viewMoney(){
return myMoney;
}
void outMoney(int money){
myMoney=myMoney-money;
}

 }
 public void m1(){
     ATM atm=new ATM();
 }
 public static void main (String args){
      **ATM atm=new ATM();** 
     Runnable runA=new Runnable(){
            @Override
            public void run() {
                // TODO Auto-generated method stub

            }};
     Thread ThreadA=new Thread();
     Thread ThreadB=new Thread();
 }

}

2个回答

zz19891008
zz19891008   2013.12.01 19:51

静态内部类不能直接调用内部类,内部类对象的出现必须要依赖外部类
你应该这样写:ATM atm=new Question1().new ATM();

xiangnan129
xiangnan129   Rxr 2013.12.04 00:17

静态方法内不能直接创建内部类,静态方法是直接跟外部类绑定的。而内部类类似于一个成员变量,需要用外部类来调用。所以需要new Question1().new ATM();
如果你的内部类是静态内部类,就直接可以在静态方法里面new了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!