gpt4 book ai didi

java - 不能从静态上下文中引用非静态方法(虽然已经创建了非静态方法)?

转载 作者:行者123 更新时间:2023-11-29 03:28:09 26 4
gpt4 key购买 nike

我有一个快速的 Java 问题。请记住,我是一个新手,正在学习我能找到的最低级别的编程类(class)。我有一项作业正在处理,但我对其中的特定部分有疑问。我已经将代码剪到核心,但我仍然无法找出我做错了什么。我将不胜感激。

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

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 上为此做了很多搜索,我发现发生这种情况的几乎所有实例都是因为编码人员没有“创建”非静态部分。不过,我已经这样做了。我似乎无法弄清楚我做错了什么。如果有人能帮助我理解我的错误,我将不胜感激。

谢谢!

最佳答案

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

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

关于java - 不能从静态上下文中引用非静态方法(虽然已经创建了非静态方法)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19895320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com