静态方法可以在Java中调用实例方法

时间:2014-09-24 14:52:04

标签: java methods static

所以我刚刚开始编程,什么不是,这个问题让我撕掉我的头发。 它询问"在什么情况下,如果有的话,静态方法可以调用实例方法吗?" 我已经尝试回到章节,它提到了两种方法并没有得到任何提示。有人可以帮忙吗?不胜感激。

4 个答案:

答案 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>

这可以解释吗?