BUG : значение D C, рассчитываемое в детском (мужском) классе, было недоступно в родительском (женском) классе.
Таким образом, каждый раз дочерний класс, использовал родительский класс convertFat () , значение D C указанной переменной было родительского класса (как неинициализированный, это было 0,0)
Решение : Я создал метод установки setWomenD C (двойной D C), чтобы установить значение D C в родительском (женском) классе. Это будет использоваться дочерним (мужским) классом при расчете значения D C для себя. Используя это, он установит то же значение для D C в родительском (женском) классе.
Добавьте этот метод в класс DC_Calculator_Women
//add this method to receive DC value from child(men) class
public void setWomenDC(double DC){
this.DC = DC;
}
Редактировать метод CalculateD C () в классе DC_Calculator_Men
@Override
public double calculateDC() {
// • Hombres: Densidad Corporal (DC) = 1.1093800 – (0.0008267 × Suma Pliegues) + (0.0000016 × Suma Pliegues al Cuadrado) – (0.0002574 × Edad)
DC = 1.1093800 - (0.0008267 * total_Pliegues) + (0.0000016 * (total_Pliegues * total_Pliegues) - (0.0002574 * age));
setWomenDC(DC); //CHANGED HERE: pass the value DC to parent class
return DC;
}
Решение № 2
сделать модификатор доступа D C в DC_Calculator_Women класс как защищенный
И, удалите объявление переменной D C из DC_Calculator_Men класс
Теперь запустите программу
Здесь мы заставляем дочерний класс использовать переменную родительского класса .