Я знаю, что есть несколько похожих тем с похожим названием, но у меня фактически немного другие вопросы, чем у других тем.
Я разработал такое решение, которое реализует абстрактный интерфейс и интерфейс, и в конструкторе он вызывает defaultметод интерфейса для инициализации карты.
Вот мой интерфейс:
public interface ICalculator{
int VALUE_OF_X= 10;
int VALUE_OF_Y= 50;
int VALUE_OF_Z = 70;
Map<String, Integer> CHAR_VAL_MAP = new HashMap<String, Integer>(7);
default void initValueMap(){
CHAR_VAL_MAP.put("X", VALUE_OF_X);
CHAR_VAL_MAP.put("Y", VALUE_OF_Y);
CHAR_VAL_MAP.put("Z", VALUE_OF_Z);
}
public int calculate(final String inStr);
}
И создал абстрактный класс:
public abstract class AbstractCalculator implements ICalculator{
protected AbstractCalculator(){
initValueMap();
}
}
Моя идея была здесь, чтобы убедиться, чтоМетод initValueMap неявно вызывается абстрактным классом.
И конкретный класс, расширяющий абстрактный класс:
public class MyCalculator extends AbstractCalculator{
public int calculate(final String romanNumberStr){
// some logic code
}
}
У меня в основном два вопроса:
1)Есть ли проблема дизайна или неправильное использование концепций ООП?2) В С ++.использование const для параметра - хорошее поведение при программировании.Но в Java-слове это не так часто.Разве плохо использовать final в параметрах метода?