में रचना और इंटरफेस का उपयोग कर डिजाइन मैं एक समस्या के लिए निम्नलिखित बनाया गया है।जावा
चूंकि जावा एकाधिक विरासत का समर्थन नहीं करता है, इसलिए मुझे Rhinoceros बनाने में परेशानी है जो एक हॉर्न और पूंछ वाला जानवर है। चारों ओर पूछने के बाद, किसी ने रचना और इंटरफेस का उपयोग करने की सिफारिश की। मैं निम्नलिखित के साथ आया:
class Animal {
// ...
}
class Guppy extends Animal { ... }
class Pigeon extends Animal { ... }
class Ram extends Animal implements IHorned { ... }
class Cat extends Animal implements ITailed { ... }
class Dog extends Animal implements ITailed {
BasicTail t = new BasicTail();
public Object getTail() {
return t.getTail();
}
public void setTail(Object in) {
t.setTail(in);
}
}
interface ITailed {
public Object getTail();
public void setTail(Object in);
//...
}
class BasicTail implements ITailed {
Object myTail;
public Object getTail() { return myTail; }
public void setTail(Object t) { myTail = t; }
}
interface IHorned {
// getters and setters
}
public static void main(String[] args) {
Animal a = getSomeAnimal();
a.doSomething();
// how do I check if a is horned or tailed?
}
मेरे इंटरफ़ेस में गेटर्स और सेटर्स हैं। क्या इससे बचने का कोई तरीका है? यह मानते हुए कि पूंछ और हॉर्न के व्यवहार को अमूर्त करने का कोई तरीका नहीं है, और इन्हें मुख्य रूप से डेटा धारकों के रूप में उपयोग किया जा रहा है। मैं कैसे निर्धारित करूं कि मेरा पशु शर्मीला है या पूंछ है?
3. 'isinstance IHorned' – khachik
Khachik, मेरा मानना है कि यह 'instanceof IHorned' –
हाँ, 3. –