मुझे जावा का उपयोग कर ऑब्जेक्ट उन्मुख प्रोग्रामिंग की सूचीबद्ध विशेषताओं वाली एक प्रोजेक्ट तैयार करने की आवश्यकता है।जावा उदाहरण encapsulation, polymorphism, और विरासत विशेषता?
क्या कोई यह पुष्टि करने के लिए मेरा त्वरित नमूना कार्यक्रम देख सकता है कि मैं समझता हूं कि इन विशेषताओं को कैसे लागू किया जाता है और वे सभी मौजूद हैं और सही तरीके से किए गए हैं?
package Example;
public class Parent {
private int a;
public void setVal(int x){
a = x;
}
public void getVal(){
System.out.println("value is "+a);
}
}
public class Child extends Parent{
//private fields indicate encapsulation
private int b;
//Child inherits int a and getVal/setVal methods from Parent
public void setVal2(int y){
b = y;
}
public void getVal2(){
System.out.println("value 2 is "+b);
}
//having a method with the same name doing different things
//for different parameter types indicates overloading,
//which is an example of polymorphism
public void setVal2(String s){
System.out.println("setVal should take an integer.");
}
}
आपके पास विरासत और encapsulation है, लेकिन आपके पास कोई polymorphism नहीं है। आपकी खुद की कोड टिप्पणी बताती है कि क्यों: विधि का एक ही नाम होना चाहिए। यह नहीं है जब आपका इरादा किसी विधि को ओवरराइड करना है तो हमेशा @ ओवरराइड एनोटेशन का उपयोग करें। –
सुनिश्चित नहीं है कि ओवरलोडिंग बहुरूपता प्रस्तुत करने का एक तरीका है ([शायद नहीं] (http://stackoverflow.com/questions/824763/is-polymorphism-another-term-for-overloading))। अगर मैं आपको पहनता हूं तो मैं इसे [इस उदाहरण] (http://stackoverflow.com/questions/154577/polymorphism-vs-overriding-vs-overloading) में ओवरराइडिंग के साथ पेश करने का प्रयास करूंगा। – Pshemo
इसके अलावा, 'getVal()' को किसी विधि को कॉल न करें जिसे कुछ भी नहीं मिलता है, लेकिन इसके बजाय प्रिंट करता है। गेटर्स और सेटर्स जावा में एक अच्छी तरह से स्थापित सम्मेलन हैं, और आपकी getVal() विधि को गेटर की तरह नामित किया गया है, लेकिन यह एक नहीं है। यदि यह गेटटर था, तो वह संबंधित सेटर विधि ('setVal() ') द्वारा निर्धारित किया गया था। –