Java вызов метода класса-потомка в абстрактном суперклассе - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть большой метод doComplicateCalculation в абстрактном классе - AbstractClass.Также есть небольшой класс Descendant, расширяющий AbstractClass.

Мне нужно внести в метод doComplicateCalculation небольшие изменения, такие как:

..............
if (val<0){
   continue;
 }
..................

Проблема также более сложна, чем большой метод во внутреннем классе абстрактного класса.Как это можно сделать?Спасибо.

Ответы [ 3 ]

2 голосов
/ 22 сентября 2011

Это может быть не самый лучший ответ;но это лучший ответ, который я могу дать с предоставленной информацией.Во всяком случае, это заставит вас задуматься о том, как вы можете решить эту проблему (потому что, если вы собираетесь программировать какое-то время, это не будет последним случаем, когда вы столкнетесь с такими проблемами).

В вашем абстрактном классе поместите это:

if (doContinue(val)){
   continue;
}

Затем определите метод в вашем абстрактном классе ...

protected boolean doContinue(int val) {
  // Or, put return true if you always want it to do this
  return false;
}

Затем переопределите этот метод в вашем конкретном классе,как это ...

protected boolean doContinue(int val) {
  return val < 0;
}
0 голосов
/ 22 сентября 2011

Это трудный вопрос, чтобы попытаться ответить на него в общем.Одна вещь, которую вы могли бы сделать, это попытаться разбить алгоритм в doComplicateCalculation как можно больше.Чтобы добавить валидацию, возможно, сделайте каждый класс, расширяющий doComplicateCalculation, реализующим публичную логическую валидацию

Вы можете даже сделать это до или в разное время по всему алгоритму.Если это невозможно, вы также можете просто переопределить этот метод (или переопределить некоторую часть метода, если вы можете разбить его).

0 голосов
/ 22 сентября 2011

Вам нужно разбить большой метод на части, чтобы можно было переопределить нужную часть.

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