我是java的总菜鸟,但今晚练习时我发现,使用OOP设计,主类中的每个方法都必须是静态的吗?在这段代码中,我无法在类中调用非静态的方法.
似乎我可能会忽略为什么你要声明一个静态的类.谢谢你的帮助!
public class JavaApplication2 {
private static CreateCar Vroom;
private static Limo Fuuu;
public static void main(String[] args) {
Vroom = new CreateCar();
Vroom.creator();
getGas();
addGas();
getGas();
Fuuu = new Limo();
Fuuu.creator();
Fuuu.wheels = 5;
Fuuu.wheelie();
}
public static int getGas(){
Vroom.returnGas();
return 0;
}
public static void addGas(){
Vroom.fillerUp();
}
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*nov 42
您可以调用非静态方法,但只能通过对象执行此操作.也就是说,您需要在给定对象上调用该方法.
您的主类也可以实例化,因此主类中的每个方法都不需要是静态的.例如:
public class MainClass {
int value;
public void printValue() {
System.out.println("" + value);
}
public static void main(String[] args){
MainClass o = new MainClass();
o.printValue();
}
}
Run Code Online (Sandbox Code Playgroud)
不,但main方法必须如此static.
要调用非静态方法的类,你必须创建一个引用到的对象是的类.然后从引用中调用该方法.
public class JavaApplication2 {
// non-static method
public void go() {
System.out.println("hello");
}
public static void main(String[] args) {
// declare a reference
JavaApplication2 app;
// create an object
app = new JavaApplication2();
// call a method
app.go();
}
}
Run Code Online (Sandbox Code Playgroud)
简短的回答:是的。
原因是您的 JVM 需要独立于已经拥有该类的任何现有实例来调用您的类的“main” 。
小语义挑剔:“main”是类的成员(静态成员);它不是类本身的名称。
有用的提示:每个类都可以有自己的、不同的“main()”。这对于对单个类进行单元测试非常有用。
这有时会让 C/C++ 程序员感到震惊,其中“main()”与“.exe”相关联,并且您只能拥有其中一个。在java中,您可以有许多“main()”方法,并在运行时调用您选择的任何一个。
| 归档时间: |
|
| 查看次数: |
52724 次 |
| 最近记录: |