class A {int x = 5;}
class B extends A {int x = 10;}
class D {
public static void main(String[] args){
A b0 = new B();
System.out.print(b0.x);
}
}
मैं सोच रहा हूँ क्यों इस कोड प्रिंट 5 10.स्टेटिक उदाहरण चर लुक जावा
अगर मैं बजाय निम्नलिखित लिखने के बजाय, चर परिवर्तित एक्स तरीकों की, यह काम करता है और अधिक के रूप में मैं उम्मीद थी, और 10 प्रिंट करता है, क्योंकि संकलन समय पर यह केवल तभी चेक किया जाता है जब बी 0 के स्थिर प्रकार, ए, में एक विधि x है, और फिर रनटाइम पर, x चलाने के लिए बी 0 के गतिशील प्रकार, बी का उपयोग करता है।
class A {int x() {return 5;}}
class B extends A {int x() {return 10;}}
class D {
public static void main(String[] args){
A b0 = new B();
System.out.print(b0.x());
}
}
मेरे सिद्धांत यह है कि उदाहरण चर स्थिर तरीकों के विपरीत ऊपर देखा जाता है, लेकिन मैं के बारे में क्यों है कि हो सकता है यकीन नहीं है।
धन्यवाद!