【问题标题】:How to use main method in method overriding?如何在方法覆盖中使用主要方法?
【发布时间】:2023-12-27 10:50:01
【问题描述】:

我刚刚开始学习 Java,并且正在学习方法覆盖。尝试在 Eclipse 中运行程序时出现错误。程序如下:

class Vehicle{  
  void run(){System.out.println("Vehicle is running");}  
}  
class Bike extends Vehicle{  

  public static void main(String args[]){  
  Bike obj = new Bike();  
  obj.run();  
  }  
}  

错误是:

错误:在类 Vehicle 中找不到主方法,请将主方法定义为: 公共静态无效主要(字符串 [] 参数) 或者 JavaFX 应用程序类必须扩展 javafx.application.Application

输出应该是:车辆正在运行。

我尝试在“class Vehicle”之后键入语句“public static void main(String[] args)”,但出现其他错误。我尝试了以下程序:

class Vehicle{  
     public static void main(String[] args){
  void run(){System.out.println("Vehicle is running");}  
     }
}  
class Bike extends Vehicle{  

  public static void main(String args[]){  
  Bike obj = new Bike();  
  obj.run();  
  }  
}  

然后,我收到以下错误:

线程“main”java.lang.Error 中的异常:未解决的编译问题: 令牌“void”的语法错误,新的预期 运行无法解析为类型 System.out 无法解析为类型 语法错误,插入“标识符(”以完成 MethodHeaderName 语法错误,插入“)”完成MethodDeclaration 语法错误,插入“;”完成方法声明 语法错误,插入“}”完成ClassBody 此方法需要正文而不是分号 标记“}”的语法错误,删除此标记

at Vehicle.main(Vehicle.java:3)

谁能解释一下在上述程序中插入“主方法”的正确方法是什么。

提前致谢。

【问题讨论】:

  • 你是如何编译和运行这段代码的?
  • Vehiclemain() 方法中有一个方法定义。这是一个错字还是你真的想运行它?
  • 第一个示例编译并正常工作。
  • 使用“javac vehicle.java”编译并使用“java Bike”作为主程序在Bike类中执行程序。这可能会有所帮助

标签: java overriding main-method


【解决方案1】:

这是错误的:

class Vehicle {
    public static void main(String[] args){
 void run(){System.out.println("Vehicle is running");}
    }
}

你不能只将一个方法定义嵌套在另一个方法中......

你可以这样做:

public class Test {

    public static void main(String args[]) {
        Bike obj = new Bike();
        obj.run();
    }

}

class Vehicle {
    void run() {
        System.out.println("Vehicle is running");
    }
}

class Bike extends Vehicle {

}

并确保您正在运行以启动应用程序的类是测试类(具有静态 void main 方法的类)

【讨论】:

  • 我试过上面的程序,但它仍然显示同样的错误。它还表明公共类型 Test 必须在其自己的文件中定义。如果我也删除 public ,它仍然显示相同的错误。错误:“在类 Vehicle 中找不到主方法,请将主方法定义为:public static void main(String[] args) 或 JavaFX 应用程序类必须扩展 javafx.application.Application”
【解决方案2】:

你第一次是对的:

class Vehicle {  
    void run() {
        System.out.println("Vehicle is running");
    }  
}  
class Bike extends Vehicle {  

    public static void main(String[] args) {  
        Bike obj = new Bike();  
        obj.run();  
    }
}  

这确实运行我刚刚测试过,这是我的输出:

Vehicle is running
Process finished with exit code 0

我建议您在运行前尝试“清理并构建”。

【讨论】:

  • 我做了“清理和构建”,但仍然显示相同的错误。