java内部类实例化错误

问题描述

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

java内部类实例化错误的相关文章

JAVA 内部类详解及实例_java

JAVA 内部类 一.什么是内部类? 一个类的定义放在另一个类的内部,这个类就叫做内部类 二.内部类有那些特性? 1.内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 . 2.内部类不能用普通的方式访问.内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的 . 3.内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量 . 三.内部类有哪几种? 1.成员内

java线程建立时,实例化错误

问题描述 java线程建立时,实例化错误 MyTHread(String name,DingDong tt) { thrd=new Thread(this,name);//从new开始就错了··这是为什么? thrd.statr(); } 解决方案 this这个类实现了Runnable么?start也拼写错了 解决方案二: 参考:http://www.xuebuyuan.com/460311.html

Java内部类的继承(全)_java

下面通过实例代码给大家分享下有关JAVA内部类的继承,具体详解如下: Java内部类的构造器必须连接到指向其外围类对象的引用(构造内部类必须给它一个外部类对象的引用,内部类依赖于外部类对象),所以在继承内部类的时候,需要在导出类的构造器中手动加入对基类构造器的调用. 因为,在导出类实例化时,并不存在一个外围类对象,以让导出类的实例去连接到它. 所以,我们需要创建一个外围类,然后用一个特定的语法来表明内部类与外围类的关系. 在下例子中,需要给导出类InheritInner一个来自内部类的外围类中的

java内部类总结

内部类是指在一个外部类的内部再定义一个类. 内部类作为外部类的一个成员,并且依附于外部类而存在的. 内部类可为静态,可用protected和private修饰.(而外部类不可以:外部类只能使用public和默认的). 内部类分为:成员内部类.局部内部类.静态内部类.匿名内部类 几种内部类的共性:A.内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号,比如Outer.class和Outer$Inner.class.B.内部类不能用普通的方

Android java代码有错误,获取的list一直为0,问题出在哪里

问题描述 Android java代码有错误,获取的list一直为0,问题出在哪里 package com.example.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.Intent; import android.content.

java异常和错误类总结(必看篇)_java

java异常和错误类总结 最近由于考试和以前的面试经常会遇到java当中异常类的继承层次的问题,弄得非常头大,因为java的异常实在是有点多,很难记下来,今天正好查了一些资料整理下来,希望对自己和大家有点帮助.最开始的时候习惯用笔记本(手写的纸质的本子)记笔记,后来发现查阅的时候不是很方便,而且速度比较慢.后来改用notepad开始记,感觉效果挺棒,简单易用,没有花哨的东西.但是也有它的缺点,比如版式的整理,不能加入一些图片(往往图片特别是一些大纲是非常好的记忆学习方法)等等,于是尝试用mark

Java内部类this$0字段产生的一个小bug

首先查看下面一段代码,我指出了问题代码的所在,读者先自己思考一下这段代码会有什么问题. 这是用clone方法完整拷贝一个二项堆(BinomialHeap)结构的代码.二项堆中包含一个内部类BinomialHeapEntry,这个内部类的对象即二项堆中的每一个结点,除了包含结点对应的关键字外,还记录父节点parent,下一个兄弟结点sibling和第一个孩子结点child三个指针.二项堆的根表通过每棵二项树根节点的sibling指针链接. cloneBinomialTree(BinomialHea

java.lang.IllegalArgumentException 错误异常求解

问题描述 java.lang.IllegalArgumentException 错误异常求解 上面是代码的日志 求大神指点 解决方案 有一个方法传参或者是什么,参数类型错了 看看提示在哪一行 解决方案二: 解决spring的java.lang.IllegalArgumentException异常.hibernate中java.lang.IllegalArgumentException异常可能的原因

arcgis java 连接sde错误 求帮助

问题描述 arcgis java 连接sde错误 求帮助 initializeArcGISLicenses(); SdeWorkspaceFactory sdeFact = new SdeWorkspaceFactory(); // Create a PropertySet object that will contain all of the // SDE connection parameters PropertySet propSet = new PropertySet(); // Pop