Java:为什么我不能在main之外调用这个方法?



作为初学者,我想知道为什么我的caller.VelocityC只在主块内工作?

当我有这样的代码时,我不能调用这个方法。

方法调用类:

public class Velocity2 {
VelocityCounter caller = new VelocityCounter();
caller.VelocityC(6, 3);
}

包含方法的类:

public class VelocityCounter {  
void VelocityC(int s, int v){
    System.out.print(s/v);
  }
}

在Java中,您不能拥有非方法一部分的可执行语句。*第一行可以:

VelocityCounter caller = new VelocityCounter();

,因为编译器认为你正在为类Velocity2声明和初始化一个名为caller的实例变量。然而,第二行:

caller.VelocityC(6, 3);

在类声明的顶层是非法的。

*从技术上讲,这是不完全正确的。语句也可以出现在构造函数、static块和实例初始化块中。

这是因为方法或构造函数之外的代码只是声明性的。

不能在方法或构造函数之外放置诸如赋值或方法调用之类的语句。

源文件的区域是您可以声明类字段或实例字段的地方,但是如果您仍然想调用caller.VelocityC(6, 3);,那么您可以使用实例初始化块,如下所示:

public class Velocity2 {
    VelocityCounter caller = new VelocityCounter();
    {
        caller.VelocityC(6, 3);
    }
}

caller.VelocityC(6, 3);将在每次构造Velocity2时执行,就像执行VelocityCounter构造和赋值给调用者一样。

http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html

相关内容

  • 没有找到相关文章

最新更新