覆盖 Java Stack 类中的方法

Ins*_*Cat 0 java overriding

我创建了自己的类“MyStack”,它继承自 Stack 并存储我在其他地方声明的项目“MyItem”。

public class MyStack extends Stack<MyItem> {
    private int pops = 0;

    public MyStack() {
    }
}
Run Code Online (Sandbox Code Playgroud)

我想重写该方法pop(),我这样做:

    @Override
    public MyItem pop() {
        if (this.isEmpty()) {
            return null;
        }
        pops++;
        return this.super();
    }
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为'java.util.Stack' is not an inner class.

然后我尝试使用pop()

    @Override
    public MyItem pop() {
        if (this.isEmpty()) {
            return null;
        }
        pops++;
        return this.pop();
    }
Run Code Online (Sandbox Code Playgroud)

但正如pop()调用一样pop(),我得到的是无限递归调用,因此,StackoverflowError.

我不明白我应该如何覆盖它。

JK_*_*des 6

我不确定你为什么要从 Stack 继承,但你的重写问题非常简单。您应该使用super.pop() [调用父方法] 而不是this.pop() [调用此方法 == 递归调用]

    @Override
public MyItem pop() {
    if (this.isEmpty()) {
        return null;
    }
    pops++;
    return super.pop();
}
Run Code Online (Sandbox Code Playgroud)