问题描述
- 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(); }
}
解决方案
静态内部类不能直接调用内部类,内部类对象的出现必须要依赖外部类
你应该这样写:ATM atm=new Question1().new ATM();
解决方案二:
静态方法内不能直接创建内部类,静态方法是直接跟外部类绑定的。而内部类类似于一个成员变量,需要用外部类来调用。所以需要new Question1().new ATM();
如果你的内部类是静态内部类,就直接可以在静态方法里面new了。
时间: 2024-10-31 17:50:50