एक सार विधि कोई शरीर के साथ एक विधि हस्ताक्षर घोषणा है। उदाहरण के लिए:
public abstract class Shape {
. . .
public abstract double getArea();
public abstract double getPerimeter();
}
तरीकों getArea()
और getPerimeter()
सार हैं। क्योंकि Shape
कक्षा में एक सार विधि है, यह को abstract
घोषित किया जाना चाहिए। बिना किसी अमूर्त तरीकों के एक वर्ग को abstract
घोषित किया जा सकता है।जब एक वर्ग सार है, इसका एक उदाहरण नहीं बनाया जा सकता है; कोई केवल (कंक्रीट) उप-वर्गों के उदाहरण बना सकता है। एक ठोस वर्ग एक वर्ग है जिसे अमूर्त घोषित नहीं किया जाता है (और इसलिए इसमें कोई सार तत्व नहीं है और सभी विरासत सार तत्वों को लागू करता है)। उदाहरण के लिए:
public class Circle extends Shape {
public double radius;
. . .
public double getArea() {
return Math.PI * radius * radius;
}
public double getPerimeter() {
return 2.0 * Math.PI * radius;
}
}
ऐसा करने के कई कारण हैं। एक ऐसा तरीका लिखना होगा जो सभी आकारों के लिए समान होगा लेकिन यह आकार-विशिष्ट व्यवहार पर निर्भर करता है जो Shape
स्तर पर अज्ञात है। उदाहरण के लिए, एक विधि लिख सकते हैं:
public abstract class Shape {
. . .
public void printArea(PrintStream out) {
out.println("The area is " + getArea());
}
}
वैसे, यह एक काल्पनिक उदाहरण है, लेकिन यह मूल विचार पता चलता है: अनिर्दिष्ट व्यवहार के मामले में ठोस व्यवहार परिभाषित करते हैं।
एक सार वर्ग रखने का एक अन्य कारण यह है कि आप आंशिक रूप से एक इंटरफेस को कार्यान्वित कर सकते हैं। किसी इंटरफ़ेस में घोषित सभी विधियों को इंटरफ़ेस लागू करने वाले किसी भी वर्ग द्वारा अमूर्त विधियों के रूप में विरासत में मिलाया जाता है। कभी-कभी आप कक्षा में एक इंटरफ़ेस का आंशिक कार्यान्वयन प्रदान करना चाहते हैं और विवरण को उप-वर्गों में छोड़ना चाहते हैं; आंशिक कार्यान्वयन अमूर्त घोषित किया जाना चाहिए।
स्रोत
2012-12-11 16:28:42
क्या आपने इसे पढ़ा? http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html – PeterMmm
मुझे बस इतना मिला कि उन्हें तत्काल नहीं किया जा सकता है, मैं उनका पूरा उद्देश्य समझ नहीं पा रहा हूं। जब हमारे पास पहले से ही एक्सेस विनिर्देशक हैं तो हमें इसकी आवश्यकता क्यों है। –
सार वर्ग डिजाइनरों को डेवलपर्स को आवश्यक mthods लागू करने के लिए मजबूर करने में मदद करता है। – Suranga