Какая логика стоит за кодом? Когда я должен рассмотреть использование методов, переопределенных в дочернем классе? - PullRequest
0 голосов
/ 13 октября 2019

Итак, у меня есть этот код, который является родительским классом:

public class Score {

  private int baseScore;

  public Score() {}

  public Score(int baseScore) {
    this.baseScore = baseScore;
  }

  public int increaseScore(int value) {
    this.baseScore += value;
    return this.baseScore;
  }

  public int computeScore(int newLevelPoints) {
    return this.increaseScore(newLevelPoints);
  }

  public int computeScore(int newLevelPoints, int bonus) {
    return this.increaseScore(newLevelPoints + 2 * bonus);
  }
}

И дочерний класс такой:

public class GameScore extends Score {

  public GameScore() {}

  public GameScore(int baseScore) {
    super(baseScore);
  }

  @Override
  public int computeScore(int newLevelPoints, int bonus) {
    return super.increaseScore(newLevelPoints + 10 * bonus);
  }

  public int computeScore(int bonus) {
    return super.increaseScore(10 * bonus);
  }
}

Я не понимаю, какой метод вызывается, когдаВ основном я делаю следующее:

public class Test {
  public static void main(String[] args) {
    int newLevelPoints = 10;
    int bonus = 2;

    Score score = new GameScore();

   //1st. score.computeScore(newLevelPoints);
   //2nd. score.computeScore(newLevelPoints, bonus);
   //3rd. System.out.println(score.computeScore(bonus));
  }
}
  1. Итак, в принципе, в первом случае должен ли выполняться метод из класса SCORE? И не должен ли быть ответ: 10?

  2. Второй метод - это доступ к методу из родительского класса no? Я имею в виду, что если ссылка принадлежит родительскому классу, он получит доступ к методу от дочернего, потому что он перезаписан или получит доступ к методам из родительского класса (даже если объект из дочернего класса)?

  3. Потому что я не уверен, что вызывать в первых 2 методах. Мне трудно разобраться с третьим ... в основном, ответ для 3 должен быть 150.

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