मान लीजिए कि मेरे पास दो वर्ग, ए और बी हैं। एक वर्ग को सार के रूप में परिभाषित किया गया है, जबकि बी इस अमूर्त वर्ग को विस्तारित करता है, और अंत में मैं परिणाम का परीक्षण करता हूं और दोनों वर्ग एक ही पैकेज का हिस्सा हैं ।जावा में सार कक्षाओं के उद्देश्य को समझना
public abstract class A {
protected abstract void method1();
protected void method2() {
System.out.println("This is Class A's method");
}
}
public class B extends A {
@Override
protected void method1() {
System.out.println("This is B's implementaiton of A's method");
}
}
और अब जब मैं उनकी जांच:
B b = new B();
b.method1();
b.method2();
मैं उम्मीद आउटपुट प्राप्त:
This is B's implementaiton of A's method
This is Class A's method
प्रश्न:
- क्या
@Override
कश्मीर का उद्देश्य है eyword, क्योंकि अगर मैं इसे छोड़ देता हूं, तो यह अभी भी वही काम करता है। - यदि मैं सार विधि को लागू नहीं करता हूं, तो मुझे संकलन त्रुटि मिलती है। तो इंटरफेस को लागू करने में क्या अंतर है?
- इसके अलावा, मैं बी में भी
method2()
लागू कर सकता हूं। फिर आउटपुट में बी का उपयोग करने के लिए परिवर्तन होता है क्या यह पैरेंट क्लास विधि को ओवरराइड नहीं करता है? फिर कक्षा ए में अमूर्त के रूप में विधि को स्पष्ट रूप से परिभाषित करने का उद्देश्य क्या है? जबकि यह भी एक अनुबंध विरासत में मिला कक्षाएं गारंटी देता है कि अपने दम पर विशिष्ट कार्यक्षमता (इंटरफेस) को लागू करेगा ...उत्पादन जबकि वहाँ कभी नहीं होगा
कभी-कभी पूछने या जवाब देने के बजाय Google के लिए तेज़ है: http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html – vulkanino
Google हमारे स्कूल में अवरुद्ध है – 911TurboS
आपका इंटरनेट बिना कैसे मौजूद है गूगल? – jondavidjohn