Эффекты вызова суперкласса java - PullRequest
0 голосов
/ 01 мая 2018

Я новичок в Java и у меня возникли проблемы с некоторыми ООП, в основном с наследованием.

Рассмотрим эти два класса:

public class Foo() {
    protected String rawData;
    public String getSomething(String rawData) {
        // ...
        this.rawData = rawData;
        prepareData();
        return rawData;
    }

    protected void prepareData() {
        // do something with class rawData
    }
}

public class Bar() extends Foo {
    @Override
    public String getSomething(String rawData) {
        // ...
        return super.rawData;
    }

    @Override
    protected void prepareData() {
        // do something with class rawData too
    }
}

вызов метода Bar class getSomething() приведет меня к вызову Foo class prepareData()?

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Java всегда идет глубже даже без @Override. Если вы не переопределите базовый метод, он запустит его.

Если вы находитесь в Bar и хотите запустить метод Foo, вы можете использовать super.prepareData() в Bar - он будет использоваться, если вы хотите запустить супер метод и добавить что-то к нему.

0 голосов
/ 01 мая 2018

Только если ваше переопределение вызывает базовый метод.

Кроме конструкторов базовых классов, Java не вызывает для вас методы без вывода сообщений.

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