一尘不染

什么时候可以在该类的方法内创建该类的对象?

java

public class TestClass(){
    public static void main(String []args) {
        TestClass t1 = new TestClass();
        t1.anything();
    }
}

在同一个类的定义中创建对象并不奇怪吗?因为然后作为响应-该对象创建了一个新对象,然后该新对象创建了另一个对象,并且无限循环直到存储空间已满才开始永不结束。


阅读 237

收藏
2020-12-03

共1个答案

一尘不染

在同一个类的定义中创建一个对象是否比响应该对象创建一个新对象并不奇怪,然后这个新对象创建另一个对象,并且无限循环开始

不,主方法仅在运行程序时运行一次。它不会再次执行。因此,该对象将仅创建一次。

认为您的主要方法超出了您的课堂范围。它将创建您的类的实例,并使用创建的实例。因此,当您从main方法创建实例时,将调用构造函数以初始化实例的状态,然后在构造函数返回时,将执行main方法的下一条语句。

实际上,您可以认为main方法不属于类实例状态的一部分。

但是,如果您在构造函数中创建了类的实例(例如0-arg),并且将该引用作为实例引用变量,则将变成无限递归。

public class A {
    private A obj;
    public A() {
        obj = new A();  // This will become recursive creation of object.
                        // Thus resulting in StackOverflow 
    }
}
2020-12-03