【问题标题】:why you can call a non-static method in the main method by creating an object? Java [duplicate]为什么可以通过创建对象在main方法中调用非静态方法? Java [重复]
【发布时间】:2014-12-27 18:52:47
【问题描述】:

我可以在主方法中创建一个对象,然后用我创建的对象调用另一个方法。

public class Obj{

    public static void main(String[] args) {

    Obj obj = new Obj();
    obj.yourNameIs();

    }

    void yourNameIs(){
    System.out.println("TY");
    }
}

但是,如果我想在不创建对象的情况下调用它,我必须将 yourNameIs 方法更改为静态。

public class Obj{

    public static void main(String[] args) {

    yourNameIs();

    }

    static void yourNameIs(){
    System.out.println("TY");
    }
}

我知道在这种情况下您不能在静态方法中调用非静态方法 main 方法。但是为什么我可以在main方法中创建一个对象,然后可以调用yourNameIs()这样的非静态方法呢?我的意思是为什么我不需要将yourNameIs() 更改为静态方法?

【问题讨论】:

    标签: java static


    【解决方案1】:

    非静态方法与类的实例相关联。一旦你有了一个实例,你就可以从任何你喜欢的地方调用这些方法(受 Java 的visibility rules 约束)。 main()static 的事实在这里根本没有区别。

    【讨论】:

      【解决方案2】:

      如果您创建一个类的实例,您可以为此实例调用任何实例(即非静态)方法。实例是否以静态方法创建无关紧要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-12
        • 2014-08-25
        • 1970-01-01
        • 2011-01-03
        • 2015-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多