एक जावा वर्ग में एक विधि को परिभाषित किया जा सकता है final, यह चिह्नित करने के लिए कि इस विधि को ओवरराइड नहीं किया जा सकता है:
public class Thingy {
public Thingy() { ... }
public int operationA() {...}
/** this method does @return That and is final. */
public final int getThat() { ...}
}
यह स्पष्ट है, और यह कुछ हद तक आकस्मिक ओवरराइडिंग, या शायद प्रदर्शन से बचाने के लिए हो सकता है - लेकिन यह मेरा सवाल नहीं है।
मेरा प्रश्न यह है: एक OOP के दृष्टिकोण से, मैं समझ गया था कि, एक विधि finalको परिभाषित करके , क्लास डिजाइनर वादा करता है कि यह विधि हमेशा वर्णित के रूप में काम करेगी, या निहित होगी। लेकिन अक्सर यह वर्ग लेखक के प्रभाव के बाहर हो सकता है, अगर विधि क्या कर रही है और अधिक जटिल है तो बस एक संपत्ति वितरित करना ।
सिंटैक्टिक बाधा मेरे लिए स्पष्ट है, लेकिन ओओपी अर्थ में निहितार्थ क्या है? क्या finalइस अर्थ में सही ढंग से अधिकांश वर्ग लेखकों द्वारा उपयोग किया जाता है?
किस तरह का "अनुबंध" एक finalविधि का वादा करता है?