Sto leggendo "disegno API pratico" e trovare paragrafo seguente:.Utilizzo di getter/setter diversi da quelli pubblici per la compatibilità binaria?
"L'altro motivo per preferire metodi più campi si trovano nella specifica JVM sei permesso di passare un metodo da una classe a uno delle sue superclassi e mantengono ancora la compatibilità binaria.Così, un metodo inizialmente introdotto come Dimension javax.swing.JComponent. getPreferredSize (Dimensione d) può essere eliminato in una nuova versione e spostato in Dimensione java.awt.Component.getPreferredSize (Dimensione d) , poiché JComponent è una sottoclasse di Component. Una modifica come questa è realmente avvenuta in JDK 1.2 e ciò potrebbe essere fatto solo perché il campo è stato incapsulato da un metodo. Un'operazione come questa non è consentita per i campi. è definito in una classe, deve stare lì per sempre r per mantenere la compatibilità binaria, che è un'altra ragione per mantenere privati i campi "
poiché sono d'accordo che usare getter/setter è il modo migliore. Ma non capisco perché lo spostamento del campo pubblico verso la classe genitore possa rompere la compatibilità binaria? Dovresti comunque essere in grado di accedere a quel campo attraverso la classe figlio purché sia pubblico in genitore.
Questa è solo una cosa che posso indovinare. Forse ai vecchi tempi, lo è. –