You basically look at the design of the warts left over from the very beginning of Java. Fields existed in Java 1.0 (supposedly already publicly available and final), and when the designers realized that they needed a way to redirect them, it was too late to change because it would disrupt almost the entire existing Java program.
The Java construct always valued reduced compatibility above everything else, so in Java 1.1 they added dialing methods as a workaround instead (which makes odd fields just worse for design, at least in this way dialing methods can for example do a permission check).
source share