关于JAVA类的调用

来源:百度知道 编辑:UC知道 时间:2024/09/22 04:16:52
class Zh
{
public static void main(String []args)
{zh01();}
static void zh01()
{ final int i=456;
class zhzh
{void zh02()
{
System.out.println(i);
}
zhzh zhangheng=new zhzh();
zhangheng.zh02(); /*这里报错,说需要标识符*/
}

}
}
然后我改成这样
class Zh
{
public static void main(String []args)
{zh01();}
static void zh01()
{ final int i=456;
class zhzh
{void zh02()
{
System.out.println(i);
}
}
zhzh zhangheng=new zhzh();
zhangheng.zh02();

}
}
这样的话就没有错了,想了半天没明白!

当然不行了,因为上面的一段程序中,你把zhangheng.zh02();写在了类体中,在类体中,只能有变量和方法的声明,不能调用方法或者写代码段.调用方法只能在方法体里写.

class Zh
{
public static void main(String []args) {
zh01();
}

static void zh01() {

final int i=456;

class zhzh {
void zh02() { // you define method for inner class
System.out.println(i); //
} //
zhzh zhangheng=new zhzh();
zhangheng.zh02(); /*这里报错,说需要标识符*/ // this is for what ?
}

}
}

这样看,肯定有语法错误了. zhangheng.zh02(); /*这里报错,说需要标识符*/
该语句 不应该出现在Class Member定义部分. 只能出现在Method 体部分.

在第二段中.该语句 是在
void zh02() 的体部分.所以没有语法错误

恩是这么回事
不过你的class zhzh是个局部内部类,你去实例化它的对象当然不能在它里面,要在外部类class Zh中去对它实例化,所以第一次是不正确的,第二次把它放到外部类的方法中去对它实例化,然后调用方法就可以了

Nigel_FB说的对啊。