Итак, у меня есть этот код, который является родительским классом:
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));
}
}
Итак, в принципе, в первом случае должен ли выполняться метод из класса SCORE? И не должен ли быть ответ: 10?
Второй метод - это доступ к методу из родительского класса no? Я имею в виду, что если ссылка принадлежит родительскому классу, он получит доступ к методу от дочернего, потому что он перезаписан или получит доступ к методам из родительского класса (даже если объект из дочернего класса)?
Потому что я не уверен, что вызывать в первых 2 методах. Мне трудно разобраться с третьим ... в основном, ответ для 3 должен быть 150.