2010-01-09 19 views
15

संभावित डुप्लिकेट:
Cheat single inheritance in Java !!
Why is Multiple Inheritance not allowed in Java or C#?
Multiple Inheritance in java.जावा में एकाधिक बेस क्लास से कैसे प्राप्त किया जाए?

मुझे पता है कि हम कई वर्गों से प्राप्त करना इंटरफेस का उपयोग कर सकते हैं लेकिन यह साथ ही राज्य के वारिस के लिए संभव है?
मैं 2 कक्षाओं से परिभाषाओं के तरीकों का वारिस कैसे कर सकता हूं और उन्हें जावा में तीसरी कक्षा में रख सकता हूं?

+0

संभावित डुप्लीकेट: http://stackoverflow.com/questions/1262447/multiple-inheritance-in-java, http://stackoverflow.com/questions/1038314/alternative-of-multiple-inheritance-in-java, http://stackoverflow.com/questions/995255/why-is-multiple-inheritance-not-allowed-in-java-or-c, http://stackoverflow.com/questions/70537/cheat-single-inheritance- इन-जावा, आदि, आदि –

+0

वे अन्य प्रश्न आईएमओ डुप्लीकेट नहीं हैं। उन प्रश्न पूछते हैं * क्यों * कोई विरासत नहीं है। यह सवाल पूछता है कि इसके आसपास कैसे जाना है - उपयुक्त उत्तरों के साथ प्रदान किया गया है कि अन्य प्रश्न प्रदान नहीं करते हैं। – HDave

उत्तर

23

संक्षिप्त उत्तर: आप नहीं कर सकते। जावा में केवल इंटरफेस की एकाधिक विरासत है।

थोड़ा लंबा उत्तर:

interface Noisy { 
    void makeNoise(); 
} 


interface Vehicle { 
    void go(int distance); 
} 

class Truck implements Vehicle { 
    ... 
} 

class Siren implements Noisy { 
    ... 
} 

class Ambulance extends Truck implements Noisy { 
    private Siren siren = new Siren(); 

    public makeNoise() { 
    siren.makeNoise(); 
    } 

    ... 
} 
2
: क्या आप वाकई तरीकों आप ध्यान इंटरफेस में कर रहे हैं, तो आप एक वर्ग है कि इंटरफेस है, और फिर प्रतिनिधियों "सुपर वर्ग" के उदाहरण के लिए लागू करता है हो सकता है

जावा स्पष्ट रूप से कार्यान्वयन के एकाधिक विरासत को अस्वीकार करता है। आपको समान परिणामों को प्राप्त करने के लिए इंटरफेस और संरचना का उपयोग करने के साथ छोड़ दिया गया है।

+0

किस लॉरेंस ने एक महान उदाहरण प्रदान किया है :) –

3

आप नहीं कर सकते, जावा एकाधिक विरासत का समर्थन नहीं करता है। आप क्या कर सकते हैं रचना है।

25

जावा में एकाधिक विरासत की अनुमति नहीं है। प्रतिनिधियों और इंटरफेस के बजाय

public interface AInterface { 
     public void a(); 
} 
public interface BInterface { 
    public void b(); 
} 

public class A implements AInterface { 
    public void a() {} 
} 
public class B implements BInterface { 
    public void b() {} 
} 

public class C implements AInterface, BInterface { 
    private A a; 
    private B b; 

    public void a() { 
     a.a(); 
    } 
    public void b() { 
     b.b(); 
    } 
} 

जावा 8 चूंकि यह इंटरफेस में Default Methods उपयोग करना संभव है का उपयोग करें।

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