बहुरूपी व्यवहार
मिश्रित shapes को प्रिंट, sort और aggregate करने के लिए polymorphism का उपयोग कीजिए। मोबाइल के लिए algorithms छोटे और पढ़ने में आसान रखिए
बहुरूपी व्यवहार, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 3 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।
अवलोकन
बहुरूपी व्यवहार हमें सभी आकृतियों के साथ एक जैसा काम करने देता है, जबकि प्रत्येक अपनी गणना चलाती है। हम: (1) मिली-जुली सूची को एकसमान ढंग से प्रिंट करेंगे, (2) area के अनुसार क्रमबद्ध करेंगे और (3) एक ही लूप से कुल योग निकालेंगे।
आधार एपीआई की जाँच-सूची
आधार एपीआई में हर जगह उपयोग की जाने वाली क्रियाएँ रहती हैं:
- area() और perimeter() — इन्हें हर आकृति में लागू करना आवश्यक है।
- सुव्यवस्थित प्रिंट के लिए label() या info() जैसी छोटी वैकल्पिक सहायक विधि।
- फ़ील्ड को ठोस आकृतियों के भीतर रखें।
कोड: एकसमान प्रिंट
एकसमान प्रिंट: लूप केवल Shape एपीआई का उपयोग करता है। प्रत्येक ऑब्जेक्ट गणना के लिए अपना कार्यान्वयन चलाता है।
public class Main {
static abstract class Shape {
abstract double area();
abstract double perimeter();
String label() { return getClass().getSimpleName(); }
String info() { return String.format("area=%.2f, per=%.2f", area(), perimeter()); }
}
static class Circle extends Shape {
double r; Circle(double r) { this.r = (r < 0) ? 0 : r; }
double area() { return Math.PI * r * r; }
double perimeter() { return 2 * Math.PI * r; }
}
static class Rectangle extends Shape {
double w, h; Rectangle(double w, double h) { this.w = Math.max(0, w); this.h = Math.max(0, h); }
double area() { return w * h; }
double perimeter() { return 2 * (w + h); }
}
public static void main(String[] args) {
Shape[] list = { new Circle(2.0), new Rectangle(3.0, 4.0), new Circle(1.0) };
for (int i = 0; i < list.length; i = i + 1) {
Shape s = list[i];
System.out.println(s.label() + " -> " + s.info());
}
}
}
area के अनुसार क्रमबद्ध करना (विचार)
क्रमबद्ध करने का विचार:
- तुलना: दो आकृतियों के area() मानों की तुलना करें।
- छोटे डेटा के लिए सरल बबल/चयन क्रमबद्धकरण पर्याप्त है।
- केवल Shape की विधियों का उपयोग करें; प्रकार की जाँच न करें।
कोड: area के अनुसार क्रमबद्ध करना
सरल क्रमबद्धकरण: इसके लिए केवल area() कॉल आवश्यक है। प्रकार की जाँच नहीं है; यही बहुरूपता की शक्ति है।
public class Main {
static abstract class Shape { abstract double area(); abstract double perimeter(); String label(){ return getClass().getSimpleName(); } }
static class Circle extends Shape { double r; Circle(double r){ this.r = Math.max(0, r);} double area(){return Math.PI*r*r;} double perimeter(){return 2*Math.PI*r;} }
static class Rectangle extends Shape { double w,h; Rectangle(double w,double h){ this.w=Math.max(0,w); this.h=Math.max(0,h);} double area(){return w*h;} double perimeter(){return 2*(w+h);} }
// Very small bubble sort for beginners (ascending by area)
static void sortByArea(Shape[] arr){
for(int pass=0; pass<arr.length-1; pass=pass+1){
for(int i=0; i<arr.length-1; i=i+1){
if(arr[i].area() > arr[i+1].area()){
Shape tmp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = tmp;
}
}
}
}
public static void main(String[] args) {
Shape[] a = { new Rectangle(3,4), new Circle(2), new Circle(1) };
sortByArea(a);
for(int i=0;i<a.length;i=i+1){
System.out.println(a[i].label() + " area=" + String.format("%.2f", a[i].area()));
}
}
}
कोड: कुल area
कुल निकालना: एक ही लूप में area() कॉल के परिणाम जोड़े जाते हैं। प्रत्येक तत्व अपनी गणना करता है और हमारा कोड सरल रहता है।
public class Main {
static abstract class Shape { abstract double area(); abstract double perimeter(); }
static class Circle extends Shape { double r; Circle(double r){ this.r=Math.max(0,r);} double area(){return Math.PI*r*r;} double perimeter(){return 2*Math.PI*r;} }
static class Rectangle extends Shape { double w,h; Rectangle(double w,double h){ this.w=Math.max(0,w); this.h=Math.max(0,h);} double area(){return w*h;} double perimeter(){return 2*(w+h);} }
static double totalArea(Shape[] arr){
double sum = 0.0;
for(int i=0;i<arr.length;i=i+1){
sum = sum + arr[i].area(); // polymorphic call
}
return sum;
}
public static void main(String[] args) {
Shape[] list = { new Circle(1), new Rectangle(2,3), new Circle(0.5) };
System.out.println("Total area = " + String.format("%.2f", totalArea(list)));
}
}
बहुरूपता की शैली की जाँच
त्वरित जाँच: यहाँ कौन-सी कोड शैली बहुरूपता का सबसे अच्छा उपयोग करती है?
पुनरावलोकन
पुनरावलोकन: हमने एक ही एपीआई के साथ कोड लिखा और प्रत्येक आकृति ने अपना परिणाम दिया। प्रिंट करना, क्रमबद्ध करना और कुल निकालना जैसे काम एकसमान कोड से हुए।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “बहुरूपी व्यवहार” पाठ निःशुल्क है?
हाँ—“बहुरूपी व्यवहार” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।
“बहुरूपी व्यवहार” में मैं क्या सीखूँगा?
मिश्रित shapes को प्रिंट, sort और aggregate करने के लिए polymorphism का उपयोग कीजिए। मोबाइल के लिए algorithms छोटे और पढ़ने में आसान रखिए आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 3 में से 3वाँ पाठ है।
“बहुरूपी व्यवहार” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- डिज़ाइन
- कार्यान्वयन
- बहुरूपी व्यवहार