Я хотел бы объявить члена данных суперкласса закрытым:
public abstract class superclass {
private int verySensitive;
abstract int setVerySensitive(int val); // must be overriden by subclass to work properly
}
public class subclass extends superclass {
@Override
protected int setVerySensitive(int val) {
if (val > threshLow && val < threshHigh) // threshHigh is calculated in superclass constructor
verySensitive = val;
}
}
Как видите, у меня есть проблема: суперкласс не может получить доступ к VerySensitive, потому что он частный, но я не хочу делать очень чувствительный, потому что он ... чувствительный.
Также обратите внимание, что setVerySensitive был сделан абстрактным, потому что проверка на допустимые значения может быть выполнена только после того, как суперкласс был построен.
Можете ли вы порекомендовать элегантный способ выхода из этой ситуации "поймать 22"?