所以我刚刚开始编程,什么不是,这个问题让我撕掉我的头发。 它询问"在什么情况下,如果有的话,静态方法可以调用实例方法吗?" 我已经尝试回到章节,它提到了两种方法并没有得到任何提示。有人可以帮忙吗?不胜感激。
答案 0 :(得分:1)
静态方法总是可以调用实例方法 - 只要它们具有对要调用该方法的实例的引用。
例如:
public static void main(String[] args) {
String foo = "hello";
System.out.println(foo.length());
}
length()
是String
上的实例方法,main
是一种静态方法,但我仍可以将其称为...因为foo
提供了引用
静态方法和实例方法在这方面的唯一区别是,实例方法隐式地引用了声明方法的类型 - this
。
答案 1 :(得分:0)
要调用实例方法,您需要一个实例。因此,静态方法可以调用实例方法,只要它具有对要调用它的实例的引用。
答案 2 :(得分:0)
可以自由调用静态方法,但只有在拥有类的实例时才能调用实例方法。静态方法需要从某个地方获取实例,或者自己创建一个实例。
例如,静态方法可以创建一个类的实例,然后在其上调用实例方法:
class Foo {
static void staticMethod() {
Foo foo = new Foo();
foo.instanceMethod();
}
void instanceMethod() { }
}
或者静态方法可以由其调用者传递给实例。
class Foo {
static void staticMethod(Foo foo) {
foo.instanceMethod();
}
void instanceMethod() { }
}
这些不是唯一的方法,但它们是常见的方式。需要的是静态方法以某种方式获取实例。
答案 3 :(得分:0)
如果对象是方法的参数 - >当然 但是静态方法不能用于非静态类变量,因为这些变量特定于该类的每个实例,并且静态方法独立于对象,并且只有该类的对象有多少才存在ONCE。 / p>
这可以解释吗?