Java 无法从静态上下文引用非静态方法(但已创建非静态)?
我有一个简单的java问题。请记住,我是一个彻头彻尾的新手,正在学习我能找到的最低级别的编程课程。我有一个任务,我正在工作,但我有一个特定的部分,它的问题。我已经把代码剪到了核心,但我仍然无法找出我的错误所在。我将非常感谢您的帮助 首先,我创建了一个类(“Car”)。此类有一个接受参数的构造函数。(同样,这被剪掉了很多,时间更长,但错误仍然存在,仅此代码): 这部分编译没有问题。但是,当我尝试在主类中使用这个类时,就会出现问题,并遇到错误Java 无法从静态上下文引用非静态方法(但已创建非静态)?,java,oop,non-static,static,Java,Oop,Non Static,Static,我有一个简单的java问题。请记住,我是一个彻头彻尾的新手,正在学习我能找到的最低级别的编程课程。我有一个任务,我正在工作,但我有一个特定的部分,它的问题。我已经把代码剪到了核心,但我仍然无法找出我的错误所在。我将非常感谢您的帮助 首先,我创建了一个类(“Car”)。此类有一个接受参数的构造函数。(同样,这被剪掉了很多,时间更长,但错误仍然存在,仅此代码): 这部分编译没有问题。但是,当我尝试在主类中使用这个类时,就会出现问题,并遇到错误 public class Drive { publ
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上做了很多搜索,我发现几乎所有的例子都是因为程序员没有“创建”非静态部分。不过,我已经做到了。我似乎不知道我做错了什么。如果有人能帮我理解我的过错,我将不胜感激
谢谢 getMake()
不是静态的
,因此您需要一次访问Car
的单个实例。因此,将代码更改为userCar.getMake()
。这意味着您希望获得userCar
的品牌,这是一个实际的对象实例
相反,调用Car.getMake()
在概念上没有意义,因为世界上没有一辆Car
都有一个make。只有像userCar
这样的单个汽车才有品牌、型号等。getMake()
不是静态的
,因此您需要一次访问Car
的单个实例。因此,将代码更改为userCar.getMake()
。这意味着您希望获得userCar
的品牌,这是一个实际的对象实例
相反,调用Car.getMake()
在概念上没有意义,因为世界上没有一辆Car
都有一个make。只有个别车辆,如userCar
有品牌、型号等。执行以下操作:
userCar.getMake();
i、 e.getMake()
不是静态方法,所以需要通过类的实例调用它 这样做:
userCar.getMake();
i、 e.
getMake()
不是静态方法,所以需要通过类的实例调用它 这不是他们是否创建了非静态部分的问题。它是在类的实例上调用方法,还是在类本身上调用方法。您在类本身Car
上调用它,而不是userCar
。这与他们是否创建了非静态部分无关。它是在类的实例上调用方法,还是在类本身上调用方法。你是在类本身Car
上调用它,而不是userCar
。噢!我懂了!这非常有效。谢谢你的充分解释,而不仅仅是告诉我要改变什么。因为它不是静态的,所以我已经“创建”了一个实例,需要将其称为单个实例,而不是错误地称为一般调用。非常感谢你!(我会接受这个当我可以)哦!我懂了!这非常有效。谢谢你的充分解释,而不仅仅是告诉我要改变什么。因为它不是静态的,所以我已经“创建”了一个实例,需要将其称为单个实例,而不是错误地称为一般调用。非常感谢你!(我会在可能的时候接受)