从不同的类调用方法时的NoSuchMethodError

时间:2015-09-03 18:10:38

标签: java methods

我试图在另一个类中调用一个方法,所以我已经启动了我试图在我调用它的类中访问的类,这里是代码:

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();
    }

每当我运行它时,我都会收到此错误:

NoMethodError

以下是我调用的方法包含的代码:

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#方面有一些经验,我不明白为什么我会在上面的图片中看到错误,只要我能看到我尝试访问的类已启动,方法的名称匹配。我是否收到错误,因为我试图访问子类而不首先访问超类?这是我认为它出错的唯一奇怪方式。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

正如其他人在评论中所建议的那样,您可能会看到此问题,因为AddCar方法的可见性(考虑将其重命名为addCar这样做会更符合java&# 39;命名惯例)。将此更改为public可能会有所帮助,但如果它没有...

另一种可能是您可能在类路径上有Car类的旧版本,但没有AddCar方法。既然你能够很好地编译东西,听起来就像你在部署环境中的类路径上有Car类的错误版本一样。尝试重新编译所有内容,然后确保所有类的最新版本都在部署区域的类路径中。