Java 谁能像我一样给我解释一下';“我5岁时犯了错误”;对非静态方法的静态引用“;
这个错误困扰着我:Java 谁能像我一样给我解释一下';“我5岁时犯了错误”;对非静态方法的静态引用“;,java,static-methods,Java,Static Methods,这个错误困扰着我: cannot make a static reference to the non-static method XYZ from the type ABC 我的眼睛呆滞了。我知道以前有人问过这个问题,但我想要5年的治疗。这是毫无意义的 我正在运行一个类,在公共静态void main中有代码,然后在它之外生成一个函数 您尝试在main中调用的函数没有static关键字。添加它,编译器就不会抱怨了 public class Foo { public static voi
cannot make a static reference to the non-static method XYZ from the type ABC
我的眼睛呆滞了。我知道以前有人问过这个问题,但我想要5年的治疗。这是毫无意义的
我正在运行一个类,在
公共静态void main
中有代码,然后在它之外生成一个函数 您尝试在main中调用的函数没有static关键字。添加它,编译器就不会抱怨了
public class Foo {
public static void main(String [] args) {
bar();
}
public static void bar() {
System.out.println("compiler won't complain");
}
}
这并不意味着这是正确的做法
静态方法和成员与类关联;非静态方法和成员与实例关联。确保你理解其中的区别。如果不这样做,那么就很难进行面向对象的编码
如果是非静态方法,则需要执行以下操作:
public class Foo {
public static void main(String [] args) {
Foo foo = new Foo();
foo.bar(); // Associated with the new Foo instance named foo.
}
public void bar() {
System.out.println("compiler won't complain");
}
}
它可以归结为类成员和实例成员。有关类成员不能直接引用实例成员的更多详细信息,请阅读本文档 Java有“静态”和“实例”方法。“静态”方法在其定义中有
static
(例如您总是对main
方法说static
。“实例”方法在其定义中没有static
一词
可以使用
ClassName.staticMethodName(parms)
从任何环境调用静态方法。只能使用对方法类的对象的引用来调用实例方法。即,必须使用objectReference.instanceMethodName(parms)
,其中objectReference
引用方法类的对象。(如果从该类的另一个实例方法内部调用,objectReference
是隐含的。)如果在main
函数旁边创建的函数不是静态的,则不能从main
方法调用它,该方法是静态的。
这是因为您没有创建包含这两个函数的类的任何实例。非静态的方法(即实例方法)本质上需要该类的实例才能被调用
假设您有以下示例:
public class Test{
public static void main(String args[]){
}
public void doSomething(){
}
}
如果要从main
方法调用doSomething()
方法,它必须如下所示
public static void main(String args[]){
new Test().doSomething();
}
一个5岁的孩子会明白,你不能从ABC类型中对非静态方法XYZ进行静态引用,也不能相应地更改它们的代码。请查看实例是什么。@SotiriosDelimanolis-Ok thanksIt如果你解释了现有解释的哪些部分是正确的,那会有所帮助unclear@RichardTingle-是的,我知道。好的,谢谢你你需要至少一个
新的,你的代码才能工作。而且,据我所知,大多数5岁的孩子都喜欢自行车:)这是更多的评论,但如果答案正确,可以接受。你是对的,它会再次出现。在学习java的时候,DuffyMo已经向你展示了一个真正的创可贴。很快你就要离开main,使用非静态方法了。非常感谢,这是单击“现在”,类和实例的概念。非常感谢,先生