Как наследование работает в этом примере? - PullRequest
0 голосов
/ 23 сентября 2019

Что делает следующий код, чтобы попытаться сохранить минимальное значение, которое будет добавлено к базовому стеку внутри другого стека, который в моем примере называется s2 (и когда это минимальное значение будет вытолкнуто, оно также будетвыскочил из Stack s2), я не понимаю, как работает base.Push(value); в методе push и base.Pop(); в методе pop?

Мой суперкласс Stack<int> это означает, что я могу использовать его методы, включая push и pop, но в моем примере, если я использую свой push метод для Integer, который вызовет base.Push для этого Integer, но где это происходит?base.Push метод добавляет, что Integer, поскольку единственный стек, который я создал и инициализировал, это Stack s2

class StackWithMin2 : Stack<int> {

    Stack<int> s2;

    public StackWithMin2() {
        s2 = new Stack<int>();
    }

    public void push(int value) {
        if (value<=min()) {
            s2.Push(value);
        }

        base.Push(value);
    }

    public int pop() {
        int value = base.Pop();
        if (value==min() {
            s2.Pop();
        }
        return value;
    }

    public int min() {
        if (s2.Count == 0)
        {
            return int.MaxValue;
        }
        else {
            return s2.Peek();
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...