我正在尝试调用不同类中的方法,因此我已经在调用它的类中启动了我尝试访问的类,代码如下:
Car c = new Car();
Van Vans = new Van();
SportsCar s = new SportsCar();
MiniVan m = new MiniVan();
while (SelectMotor < 1 || SelectMotor > 4) {
System.out.println("\t\t Choose the vechile you wish to add:");
System.out.println("1.Car");
System.out.println("2.Van");
System.out.println("1.SportsCar");
System.out.println("4.MiniVan");
SelectMotor = in.nextInt();
if (SelectMotor == 1) {
c.AddCar();
}
每当我运行它时,我都会收到此错误:
这是包含我调用的方法的代码:
import java.util.Scanner;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
class Car extends Vehicle {
Vehicle v = new Vehicle();
WriteFile WriteCarDetails = new WriteFile(CarDetails, true);
Scanner SaveCarDetails = new Scanner(System.SaveCarDetails);
String WriteMe;
void AddCar() {
System.out.println("\n\n\t\t\tAdding a Car");
System.out.print("\nEnter Make: ");
v.SetMake = SaveCarDetails.next;
System.out.print("\nEnter Model: ");
v.SetModel = SaveCarDetails.next;
System.out.print("\nEnter Litre: ");
v.SetLitre = SaveCarDetails.nextDouble;
System.out.println("\nEnter Top Speed: ");
v.SetTopSpeed = SaveCarDetails.nextInt;
System.out.println("\nEnter Gears: ");
v.SetGears = SaveCarDetails.nextInt;
System.out.println("\nEnter Doors: ");
v.SetDoors = SaveCarDetails.nextInt;
}
}
我是 Java 新手,但有一些 C# 经验,我不明白为什么会出现上图所示的错误,据我所知,我尝试访问的类已启动,方法的名称匹配。我收到错误是因为我试图在不先访问父类(super class)的情况下访问子类吗?这是我认为事情出了问题的唯一奇怪的方式。感谢您的帮助!
最佳答案
正如其他人在评论中建议的那样,您可能会看到此问题,因为 AddCar
方法的可见性(考虑将其重命名为 addCar
,因为这样做会更容易)符合java的命名约定)。将其更改为 public
可能会有所帮助,但如果没有......
另一种可能是您的类路径上可能有旧版本的 Car
类,但没有 AddCar
方法。由于您能够很好地进行编译,因此在我看来,您的部署环境中的类路径上的 Car
类版本错误。尝试重新编译所有内容,然后确保所有类的最新版本都位于部署区域的类路径中。
关于java - 从不同类调用方法时出现 NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32382685/