ओवरलोडिंग के लिए लागू नहीं होती है मेरी कास्टिंग क्लास में, शिक्षक ने हमें निम्नानुसार एक दिलचस्प तथ्य सिखाया।अंतिम कास्टिंग अवधारणा
class Casting {
public static void main(String args[]){
int i = 10;
byte b = i;
System.out.println(b);
}
}
हमने एक त्रुटि
java:5: possible loss of precision
मिला और जैसा कि
class Casting1 {
public static void main(String args[]){
final int i = 10;
byte b = i;
System.out.println(10);
}
}
10
इस प्रकार हम सही उत्पादन मिल गया तो हम कोड बदल दिया है। कारण के लिए, उन्होंने कहा कि जब हम एक चर final
संशोधित करते हैं तो चर को सबसे छोटे डेटा प्रकार में संग्रहीत किया जाता है। इस मामले में byte
था। यही कारण है कि हम कास्ट कीवर्ड का उपयोग किए बिना इसे कास्ट करने में सक्षम थे।
लेकिन जब हम इस तरह विधि ओवरलोडिंग,
class A {
void m(int i){
System.out.println("int");
}
void m(byte b){
System.out.println("byte");
}
public static void main(String args[]){
A a1 = new A();
final int i = 10;
a1.m(i);
}
}
का उपयोग मैं उत्पादन int
मिलता है। यदि अंतिम चर सबसे कम संभव डेटा प्रकार में संग्रहीत हैं, तो यह byte
होना चाहिए। तो मैंने ओवरलोडिंग के बिना निम्नलिखित कोड की कोशिश की।
class A {
void m(byte b){
System.out.println("byte");
}
public static void main(String args[]){
A a1 = new A();
final int i = 10;
a1.m(i);
}
}
java:9: m(byte) in A cannot be applied to (int)
इसका क्या कारण है? क्या कोई मुद्दा है कि मैंने गलत समझा है?
अंतिम के साथ उदाहरण में, आप निरंतर 10 को println पर पास करते हैं। शायद बी होना चाहिए। आपको यह जांचना चाहिए कि यह टाइपो आपके कोड में मौजूद है या नहीं, यह परिणाम बदल सकता है? –
पहला उदाहरण मुझे देता है एक संकलन त्रुटि: मिस्चैच टाइप करें: int से बाइट में कनवर्ट नहीं किया जा सकता है। दूसरा उदाहरण (अंतिम के साथ) संकलन पास करता है –
@sharonbn हाँ, यह कैसा होना चाहिए। मैंने उल्लेख किया है कि मुझे एक त्रुटि मिली है –