2015-01-17 19 views
5

मैं यह video देख रहा हूं, और 2.52 समय पर यह एक उदाहरण देता है। यह कहता है कि ShapeInterface या एक सार कक्षा हो सकता है और अन्य 2 कक्षाएं हैं Triangle और CircleShape में कोई विधि ड्रा है।इसे बहुरूपता क्यों कहा जाता है?

अब यह कहते हैं:

Shape shape=new Triangle(); 
shape.draw(); 

Shape shape=new Circle(); 
shape.draw(); 

और दावा है कि यह बहुरूपता है।

लेकिन जहां तक ​​मुझे पता है कि पॉलिमॉर्फिज्म या तो article में दिए गए विधि ओवरलोडिंग या विधि ओवरराइडिंग में किया जा सकता है।

क्या कोई कृपया बता सकता है कि वीडियो में दिया गया उदाहरण वास्तव में बहुरूपता है? किसी भी तरह की मदद में अग्रिम धन्यवाद।

+2

पॉलिमॉर्फिज्म वह जगह है जहां एक अभिभावक वर्ग कई बच्चों की वस्तुओं के लिए एक ब्लूप्रिंट हो सकता है। एक त्रिभुज और सर्कल दोनों एक आकार हैं, और सतह क्षेत्रों जैसे सामान्य विशेषताओं को साझा करते हैं। एक व्यक्ति माता-पिता वर्ग होता है, और नर या मादा बच्चों की वस्तुओं के रूप में बहुरूपता का एक और उदाहरण है। –

+2

यह बहुरूपता है क्योंकि 'आकार' सुपर क्लास है। – Shahar

+0

इसके बारे में चिंता मत करो। मैंने आपको एक उपहास दिया क्योंकि मैंने वास्तव में सोचा कि यह एक अच्छा सवाल था। स्टैक ओवरफ़्लो में आपका स्वागत है। हमारे नियमों को सीखना एक प्रक्रिया है और फिसलना मानव है, खासकर यदि आप नए हैं। –

उत्तर

0

जावा में पॉलीमोर्फिक संरचनाओं को लिखने के कई तरीके हैं। पॉलीमोर्फिज्म बस "एक चर, एक फ़ंक्शन, या एक ऑब्जेक्ट बनाने की क्षमता है जिसमें एक से अधिक रूप हैं।"

यह पॉलीमोर्फिज्म है क्योंकि स्पष्ट रूप से पैरेंट क्लास आकार में विधि ड्रा(), कई बच्चों के वर्गों द्वारा भी ओवरराइड किया जाता है: त्रिकोण और मंडल। तो ड्रा() में एक से अधिक रूप हैं: मंडल और त्रिकोण रूप।

देखें http://howtodoinjava.com/2013/07/15/what-is-polymorphism-in-java/

0

Polymorphism कई आकार या क्षमता वाले अलग अलग रूपों पर ले के एक राज्य का मतलब है। इस बात को ध्यान में रखते हुए, एक आकार कई रूपों जैसे त्रिकोण या सर्कल ले सकता है। इन रूपों में गुणों को साझा किया जाएगा, और कोड किए गए हैं और इस तरह उपयोग किए जाते हैं। बेहतर उदाहरण समझने के लिए एक और उदाहरण के रूप में, आप एक व्यक्ति हो सकते हैं, और एक व्यक्ति के कई रूप हो सकते हैं: नर और मादा।

public abstract class Person { 
    private String name; 
    private int age; 
    //additional code - functionalities that children classes share 
} 

public class Male extends Person { 
    //fields and functionalities that males only have 
} 

public class Female extends Person { 
    //fields and functionalities that females only have 
} 

फिर आप बाध्यकारी गतिशील के माध्यम से लिंग आप चाहते हैं बना सकते हैं:

Person male = new Male(); 
Person female = new Female(); 

आपके प्रश्न का उत्तर करने के लिए, हाँ, आपको दिए गए उदाहरण वास्तव में बहुरूपता है।

0

त्रिकोण और सर्कल दोनों आकार वर्ग से विरासत में हैं। आकार वर्ग उप वर्गों की वस्तुओं को पकड़ सकता है। तो polymorphism वहाँ है। आप त्रिभुज टी = नया त्रिकोण() कह सकते हैं; और सर्किल सी = नया सर्किल();

लेकिन यहां आपके पास उप वर्ग ऑब्जेक्ट आकार एस = नया सर्किल() है; polymorphism- कई रूपों,

0

पॉलिमॉर्फिज्म का मतलब है कि एक वस्तु कई रूपों पर ले सकती है। आप कह सकते हैं आकार एक = नया त्रिकोण() क्योंकि एक त्रिभुज आईएस-ए आकार (त्रिकोण आकार बढ़ाता है)। आप एक = नया सर्किल() आकार भी कह सकते हैं क्योंकि सर्कल आईएस-ए आकार (सर्किल आकार बढ़ाता है)। आपके उदाहरण की पहली पंक्ति में, JVM त्रिकोण वर्ग से ड्रॉ() विधि को कॉल करेगा। दूसरी पंक्ति में, यह एक आकार संदर्भ का उपयोग करते समय सर्किल कक्षा में परिभाषित ड्रॉ() विधि को कॉल करेगा!

abstract class Shape { 
    public abstract void draw(); 
} 

class Triangle extends Shape { 

    @Override 
    public void draw() { 
     System.out.println("Triangle"); 
    } 
} 

class Circle extends Shape { 

    @Override 
    public void draw() { 
     System.out.println("Circle draw"); 
    } 
} 
0

पहले तकनीकी रूप से मत जाओ, अर्थ से समझने की कोशिश करें। ओओपी में बहुरूपता का अर्थ वस्तु की अलग-अलग व्यवहार करने की क्षमता है।अब देता है लगता है कि कैसे विधि ओवरलोडिंग का प्रतिनिधित्व बहुरूपता

विधि ओवरलोडिंग बहुरूपता

OOP विधि में, एक व्यवहार का प्रतिनिधित्व करता है जावा में तकनीक ओवरलोडिंग विधि का उपयोग कर आप एक विधि जो एक ही नाम लेकिन अलग पैरामीटर है बना सकते हैं सूची, अब आइए सोचना शुरू करें .. समान नाम का मतलब है -> वही व्यवहार, लेकिन हम जानते हैं कि नाम समान व्यवहार समान नहीं है .. सरल शब्दों में पॉलिमॉर्फिक

उदाहरण: आपने मानव वर्ग में विधि खाई है अब आप अलग-अलग भोजन विधि बनाते हैं पैरामीटर सूची, जिस विधि के अनुसार आप अपेक्षित व्यवहार में परिवर्तन करते हैं।

विधि अधिभावी बहुरूपता

तो कैसे विधि अधिभावी बहुरूपता है? आइए इसे समझने की कोशिश करें। विधि ओवरराइड में आप सुपर क्लास में परिभाषित एक विधि को ओवरराइड करते हैं।

पूर्व: मानव है एक विधि खाने और अब आप एक अलौकिक वर्ग जो मानव की एक उपवर्ग है बनाने और उसके बाद ओवरराइड खाने विधि

इसलिए हम जानते हैं कि अलौकिक भी खाने लेकिन अलग ढंग से करने की क्षमता हो रही है, लेकिन अब यहां अधिभार की तरह नहीं है हमें पॉलिमॉर्फिज्म का प्रदर्शन करने में समस्या है। क्यों क्योंकि यदि आप मानव का उदाहरण बनाते हैं तो एक विधि है इसलिए कोई बहुलक व्यवहार नहीं है। जैसे कि आप सुपरहमान का उदाहरण बनाते हैं तो एक विधि और एक अपेक्षित व्यवहार होता है इसलिए कोई बहुरूपता नहीं होती है। तो यह हम कैसे

Human a = new Human(); 
a.eat(); 
Human b = new SuperHuman(); 
b.eat(); 

हम बस यह नहीं कह सकते कि कौन सी विधि करता है का प्रदर्शन है जो उत्पादन केवल बाईं ओर को देखकर क्योंकि दोनों "एक" और "b" मानव प्रकार तो संकलक निश्चित नहीं हो सकते हैं A.eat() और b.eat() का आउटपुट तब तक होगा जब तक कोड वास्तव में चलता है, इसलिए यह पॉलिमॉर्फिक है।

संबंधित मुद्दे