1

我有一个快速的 Java 问题。请记住,我是一个新手,正在学习我能找到的最低级别的编程课程。我有一个我正在处理的任务,但我遇到了它的特定部分的问题。我已经将代码剪断到核心,但我仍然无法找出我做错了什么。我将不胜感激。

首先,我创建了一个类(“汽车”)。这个类有一个带参数的构造函数。(同样,这已经被剪掉了很多,它更长,但仅此代码错误仍然存​​在):

public class Car
{
   private String make;

   public Car(String carMake)
   {
      make = carMake;
   }

   public String getMake()
   {
      return make;
   }
}

这部分编译没有问题。但是,当我尝试在主类中使用这个类时,这就是问题所在,我遇到了错误。

public class Drive
{
   public static void main(String[] args)
   {
      Car userCar;

      userCar = new Car("Focus");

      System.out.println(Car.getMake());
   }
}

编译这个类给了我这个错误信息。

Drive.java:9: error: non-static method getMake() cannot be referenced from 
a static context
  System.out.println(Car.getMake());

我已经在 Internet 和 SE 上进行了很多搜索,几乎所有我发现发生这种情况的实例是因为编码器没有“创建”非静态部分。不过,我已经这样做了。我似乎无法弄清楚我做错了什么。如果有人能帮助我理解我的错,我将不胜感激。

谢谢!

4

2 回答 2

4

getMake()is not static,因此您需要一次访问一个实例Car。因此,将您的代码更改为userCar.getMake(). 这意味着您想要获取 make of userCar,它是一个实际的对象实例。

相比之下,召唤Car.getMake()在概念上没有意义,因为世界上没有一个单一Car的品牌。只有个别汽车,例如userCar有品牌、型号等。

于 2013-11-10T21:20:52.707 回答
0

做这个:

userCar.getMake();

iegetMake()不是静态方法,因此您需要通过类的实例调用它。

于 2013-11-10T21:28:37.983 回答