我有一个快速的java问题。请记住,我是一个全新的工作,通过我能找到的最低级编程课程。我有一项我正在处理的任务,但我遇到了特定部分的问题。我已经将代码剪切到了核心,我仍然无法找出我做错了什么。我很感激任何帮助。
首先我创建了一个类(" Car")。这个类有一个带参数的构造函数。 (这又被剪掉了很多,它的时间更长了,但只有这段代码的错误仍然存在):
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());
我已经通过互联网和SE进行了大量的搜索,而且几乎所有我发现这种情况的例子都是因为编码器没有"创建"非静态部分。不过,我做到了这一点。我似乎无法弄清楚我做错了什么。如果有人能帮我理解我的错,我会非常感激。
谢谢!
答案 0 :(得分:4)
getMake()
不是static
,因此您需要一次为Car
的单个实例访问它。因此,请将代码更改为userCar.getMake()
。这意味着您希望获得userCar
的make,这是一个实际的对象实例。
相反,调用Car.getMake()
并不具有概念意义,因为世界上每一个Car
都没有单一的品牌。只有userCar
等个别汽车才有品牌,型号等
答案 1 :(得分:0)
这样做:
userCar.getMake();
即。 getMake()
不是静态方法,因此您需要通过类的实例来调用它。