【问题标题】:Static method in java can call non static methodjava中的静态方法可以调用非静态方法
【发布时间】:2014-04-19 20:13:14
【问题描述】:

据说在java中我们不能从静态方法调用非静态方法..这到底是什么意思?我们总是可以使用对象调用非静态方法frm静态方法..'请解释

【问题讨论】:

标签: java static


【解决方案1】:

这是一个很好的代码片段来说明它的含义:

class MyClass{

    static void func1(){
        func2(); //This will be an error
    }

    void func2(){
        System.out.println("Hello World!");
    }

}

【讨论】:

    【解决方案2】:

    要调用非静态方法,您需要一个实例(对象)——因为这些方法属于一个实例,并且通常只在实例的上下文中才有意义。

    静态方法不属于实例——它们属于类。所以不需要先创建实例,直接调用MyClass.doSomething()即可

    void foo(){
      MyClass.doSomething();
    }
    

    但您可以从静态方法调用非静态方法,前提是您首先创建一个实例

    static void bar(){
      MyObject o = new MyObject();
      o.doSomething();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 2016-01-27
      相关资源
      最近更新 更多