JVM विनिर्देश बताता है कि इंटरफेस में java/lang/Object
का होना चाहिए, भले ही इंटरफेस java/lang/Object
का विस्तार न करें?क्लास फ़ाइल प्रारूप के अनुसार इंटरफ़ेस ऑब्जेक्ट का विस्तार क्यों करते हैं?
मैं विशेष रूप से JVM कल्पना है, जहां यह कहते हैं की §4.1 की चर्चा करते हुए हूँ:
एक अंतरफलक के लिए, super_class आइटम के मूल्य हमेशा constant_pool तालिका में एक वैध सूचकांक होना चाहिए। उस अनुक्रमणिका में निरंतर_पूल प्रविष्टि क्लास ऑब्जेक्ट का प्रतिनिधित्व करने वाली CONSTANT_Class_info संरचना होनी चाहिए।
जेएलएस के §9.2 में, यह कहता है कि इंटरफेस ऑब्जेक्ट का विस्तार नहीं करता है। इसके बजाय एक परोक्ष बनाया सार विधि घोषित किया जाता है जो वस्तु कक्षा में प्रत्येक सार्वजनिक विधि से मेल खाता है: एक अंतरफलक कोई सीधा superinterfaces है
, तो इंटरफ़ेस परोक्ष हस्ताक्षर है, वापसी प्रकार आर के साथ एक सार्वजनिक सार सदस्य विधि मीटर वाणी , और हस्ताक्षर एस, रिटर्न टाइप आर के साथ प्रत्येक सार्वजनिक उदाहरण विधि एम के अनुरूप खंड टी फेंकता है, और ऑब्जेक्ट में घोषित क्लॉज टी फेंकता है, जब तक कि एक ही हस्ताक्षर के साथ एक विधि, एक ही रिटर्न प्रकार, और एक संगत फेंकता खंड स्पष्ट रूप से घोषित नहीं किया जाता है इंटरफेस।