我不知道如何修复堆栈溢出错误

Hel*_*der 1 java stack-overflow

我收到一个错误:

Exception in thread "main" java.lang.StackOverflowError
    at CreateCardDeck.<init>(CreateCardDeck.java:6)
    at CardStack.<init>(CardStack.java:7)
    at CreateCardDeck.<init>(CreateCardDeck.java:8)
    at CardStack.<init>(CardStack.java:7)
    at CreateCardDeck.<init>(CreateCardDeck.java:8)
    ...
    ...
    ...
    at CardStack.<init>(CardStack.java:7)
    at CreateCardDeck.<init>(CreateCardDeck.java:8)
Run Code Online (Sandbox Code Playgroud)

But I don't understand why there would be an error. In my code I have specified amount of cards etc. So what would be the problem here?

public class CreateCardDeck
{
    int deckSize = 52;
    CardStack cardStack;

    CreateCardDeck()
    {
        cardStack = new CardStack(deckSize); --------------- problem here -----
    }
}
Run Code Online (Sandbox Code Playgroud)

And

class CardStack extends CreateCardDeck
{
    public CardStack(int s) ------------ problem here --------------
    {
        maxSize = s;
        stackArray = new Card[maxSize];
        top = -1;
    }
......
}
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 7

You're using recursion inadvertently by having CardStack extend CreateCardStack. Don't use inheritance here. Besides causing your StackOverflowError error, it's just plain wrong. CardStack is not a more specialized version of CreateCardStack and so should not extend it. In fact CardStack should have no knowledge about CreateCardStack at all.

Your recursion and SO error:

您的CardStack构造函数默认调用super的构造函数,该构造函数创建另一个CardStack对象,其构造函数默认调用super的构造函数,该构造函数创建另一个CardStack对象,其构造函数默认调用super的构造函数,该构造函数创建另一个构造函数将由其生成的CardStack对象.默认调用super的构造函数,该构造函数创建另一个CardStack对象,其构造函数默认调用super的构造函数,该构造函数创建另一个CardStack对象,其构造函数几乎无穷无尽,直到内存耗尽.