Я пытаюсь расширить класс для небольшого изменения в реализации.Теперь в этом родительском классе есть конечная переменная:
private final float mIndicatorItemLength = DP * 4;
, определенная на уровне класса, и я хочу предоставить пользовательское значение этой переменной из моего дочернего класса.Поскольку эта переменная является окончательной, я изменяю ее для инициализации из конструктора.У меня есть два конструктора:
public HorizontalCirclePagerIndicatorDecoration()
, на которые ссылаются как:
public HorizontalCirclePagerIndicatorDecoration() {
mIndicatorItemLength = DP * 4;
}
и
public HorizontalCirclePagerIndicatorDecoration(int colorActive, int colorInactive, int mIndicatorItemLength)
Первый конструктор по умолчанию, второй я хочу получить доступиз моего дочернего класса и установите пользовательские значения, используя ключевое слово super из дочернего класса, например:
public TPagerIndicator(int colorActive, int colorInactive) {
super(colorActive, colorInactive, mIndicatorItemLength);
}
Моя подпись дочернего класса выглядит так:
TPagerIndicator extends HorizontalCirclePagerIndicatorDecoration
Однако я получаю здесь ошибкуas: Невозможно сослаться на TPagerIndicator.mIndicatorItemLength
до вызова конструктора супертипа.
Теперь я думаю, что мне придется удалить последний модификатор на
private final float mIndicatorItemLength = DP * 4;
в родительском классе.Это правильный путь?