Вы можете получить доступ к закрытой переменной любого класса, но это плохая идея, потому что вы нарушаете один из основных принципов ООП - инкапсуляция.
Но иногда программист вынужден его сломать. Вот код, который решает вашу проблему:
Расширенный класс
public class ExtZoomableChart
extends ZoomableChart {
public Rectangle2D getZoomArea() {
try {
Field field = ZoomableChart.class.getDeclaredField("m_zoomArea");
field.setAccessible(true);
Object value = field.get(this);
field.setAccessible(false);
if (value == null) {
return null;
} else if (Rectangle2D.class.isAssignableFrom(value.getClass())) {
return (Rectangle2D) value;
}
throw new RuntimeException("Wrong value");
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
и пример вызова:
public class Main {
public static void main(String[] args) {
ExtZoomableChart extZoomableChart = new ExtZoomableChart();
Rectangle2D d = extZoomableChart.getZoomArea();
System.out.println(d);
}
}
Вам не нужно расширять ZoomableChart, чтобы получить приватную переменную. Вы можете получить это значение почти отовсюду. Но помните - обычно это плохая практика.