क्या जावा में एक अनाम वर्ग के पास अपने सुपरक्लास की तुलना में अन्य विधियां हो सकती हैं? [डुप्लिकेट]

Dec 27 2020

मुझे पता है कि अनाम कक्षाएं ओवरराइडिंग इत्यादि के लिए अच्छी हैं, लेकिन मुझे आश्चर्य है कि क्या आप अन्य तरीकों को भी जोड़ सकते हैं जो नीचे दिए उदाहरण में मूल वर्ग में मौजूद नहीं हैं।

यह केवल विधि के रूप में wieBenIk के साथ मेरी कक्षा है।

public class Driehoek {

//methoden
public void wieBenIk(){
    System.out.println("ik ben een driehoek");
}

}

और यहाँ मेरा अनाम वर्ग है जहाँ मैंने नयामेथोड जोड़ा है।

पब्लिक क्लास मेन {

public static void main(String[] args) {

    Driehoek test = new Driehoek(){

        @Override
        public void wieBenIk() {
            System.out.println("overrided by anonymous class");
        }

        public void newMethod(){
            System.out.println("I am a new method");
        }
    };

    test.newMethod();

}

}

मेरा सवाल यह है कि test.newMethod () काम क्यों नहीं कर रहा है? क्या यह दूसरे की तरह एक बच्चा वर्ग नहीं है? मेरी मदद करने के लिए सभी को धन्यवाद।

जवाब

SJuan76 Dec 27 2020 at 05:44

परीक्षण को Driehoek के उदाहरण के रूप में घोषित किया गया है । जैसे, कंपाइलर के लिए इसमें Driehoek के सदस्य होंगे

इसी तरह, यदि आप परिभाषित करते हैं

Object test = new Driehoek() {....};

कंपाइलर टेस्ट के लिए केवल ऑब्जेक्ट मेंबर उपलब्ध होंगे ।

यदि आप अनाम वर्ग में अधिक सदस्य जोड़ते हैं, तो संकलक को यह पता नहीं चलेगा कि परीक्षण में वे विधियाँ उपलब्ध हैं। तो यह आपको उनका उपयोग करने की अनुमति नहीं देता है