Это точно так же, как и с любой другой функцией, безоговорочно вызывающей себя с точно такими же параметрами:
public void f() {
f(); // <---- will cause a stack overflow due to infinite recursion
}
Функция просто продолжает вызывать себя, и для каждого вызова требуется место в стеке.Рано или поздно стек исчерпывается, и вы получаете исключение.
Точно так же происходит, когда A()
продолжает вызывать себя (в new A()
).