为什么可以通过创建对象在main方法中调用非静态方法?JAVA

为什么可以通过创建对象在main方法中调用非静态方法?JAVA,java,static,Java,Static,我可以在main方法中创建一个对象,并使用我创建的对象调用另一个方法 public class Obj{ public static void main(String[] args) { Obj obj = new Obj(); obj.yourNameIs(); } void yourNameIs(){ System.out.println("TY"); } } 但是,如果我想在不创建对象的情况下调用它,我必须将yourName

我可以在main方法中创建一个对象,并使用我创建的对象调用另一个方法

public class Obj{

    public static void main(String[] args) {

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

    }

    void yourNameIs(){
    System.out.println("TY");
    }
}
但是,如果我想在不创建对象的情况下调用它,我必须将
yourNameIs
方法更改为static

public class Obj{

    public static void main(String[] args) {

    yourNameIs();

    }

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

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

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

非静态方法与类的实例相关联。一旦您有了一个实例,您就可以从任何您喜欢的地方调用这样的方法(取决于Java的)。
main()
static
这一事实在这里没有任何区别