estoy leyendo "diseño práctico API" y encuentro siguiente párrafo:.¿Usando getter/setter que no sea el campo público para la compatibilidad binaria?
"La otra razón para preferir métodos más campos se pueden encontrar en la especificación JVM Se te permite mover un método de una clase a uno de sus superclases y aún mantiene la compatibilidad binaria. Por lo tanto, un método introducido inicialmente como Dimension javax.swing.JComponent. getPreferredSize (Dimension d) puede eliminarse en una nueva versión y moverse a Dimension java.awt.Component.getPreferredSize (Dimension d) , como JComponent es una subclase de Component. Un cambio como este realmente sucedió en JDK 1.2, y esto podría hacerse solo porque el campo fue encapsulado por un método. Una operación como esta no está permitida para los campos. se define en una clase, tiene que permanecer allí antes r para mantener la compatibilidad binaria, que es otra razón para mantener los campos privados "
porque estoy de acuerdo con el uso de getter/setter es una mejor manera. Pero no entiendo por qué mover el campo público a la clase principal romperá la compatibilidad binaria. Debería poder acceder a ese campo a través de la clase secundaria, siempre que sea pública en el padre.
. Esto es lo único que puedo adivinar. Tal vez en un tiempo muy antiguo, lo es. –