मैं "प्रैक्टिकल एपीआई डिजाइन" पढ़ रहा हूँ और निम्नलिखित पैरा लगता है:।बाइनरी संगतता के लिए सार्वजनिक क्षेत्र के अलावा गेटर/सेटर का उपयोग करना?
"क्षेत्रों पर तरीकों को पसंद करते हैं अन्य कारण JVM विनिर्देश में पाया जा सकता है आप एक वर्ग से एक के लिए एक विधि को स्थानांतरित करने की अनुमति दी रहे हैं इसके सुपरक्लास और अभी भी बाइनरी संगतता बनाए रखते हैं। इसलिए, प्रारंभ में एक विधि आयाम javax.swing.JComponent के रूप में पेश की गई। getPreferredSize (आयाम डी) को एक नए संस्करण में हटाया जा सकता है और आयाम java.awt.Component.getPreferredSize (आयाम डी) में स्थानांतरित किया जा सकता है। , क्योंकि जेकंपोनेंट घटक का उप-वर्ग है। इस तरह का एक बदलाव वास्तव में जेडीके 1.2 में हुआ था, और यह केवल इसलिए किया जा सकता था क्योंकि इस क्षेत्र को एक विधि द्वारा encapsulated था। इस तरह के एक ऑपरेशन फ़ील्ड के लिए अनुमति नहीं है। एक बार एक क्षेत्र एक वर्ग में परिभाषित किया गया है, इसे वहां रहना है बाइनरी संगतता को बनाए रखने के लिए आर, जो फ़ील्ड को निजी रखने के लिए एक और कारण है "
क्योंकि मैं गेटर/सेटर का उपयोग करने से सहमत हूं बेहतर तरीका है। लेकिन मुझे समझ में नहीं आता कि क्यों सार्वजनिक क्षेत्र को सार्वजनिक वर्ग में ले जाना बाइनरी संगतता को तोड़ देगा? जब तक कि यह माता-पिता में सार्वजनिक न हो तब तक आपको उस वर्ग को बाल वर्ग के माध्यम से एक्सेस करने में सक्षम होना चाहिए।
यह केवल एक चीज है जिसे मैं अनुमान लगा सकता हूं। शायद बहुत पुराने समय में, यह है। –