मैं निम्नलिखित 2 वर्गों:जावा ऑब्जेक्ट असाइनमेंट का क्या अर्थ है?
Cat : static -- 1
Cat : instance -- 2
Animal : static -- 3
Animal : static -- 4
Cat : instance -- 5
मैं 1,2,3 को समझ सकते हैं और 5, लेकिन क्यों # 4:
class Animal {
public static void staticMethod(int i) {
System.out.println("Animal : static -- " + i);
}
public void instanceMethod(int i) {
System.out.println("Animal : instance -- " + i);
}
}
class Cat extends Animal {
public static void staticMethod(int i) {
System.out.println("Cat : static -- " + i);
}
public void instanceMethod(int i) {
System.out.println("Cat : instance -- " + i);
}
public static void main(String[] args) {
Cat myCat = new Cat();
myCat.staticMethod(1); // Cat : static -- 1
myCat.instanceMethod(2); // Cat : instance -- 2
System.out.println("");
Animal myAnimal = myCat;
Animal.staticMethod(3); // Animal : static -- 3
myAnimal.staticMethod(4); // Animal : static -- 4 [ ? ]
System.out.println("");
myAnimal.instanceMethod(5); // Cat : instance -- 5
}
}
और जब मैं बिल्ली चलाने के लिए, मैं निम्नलिखित परिणाम मिला नहीं है: "बिल्ली: स्थैतिक - 4"? मेरी समझ इस तरह होगी:
myAnimal = myCat का अर्थ है "myAnimal" अब "myCat" जैसा ही है, इसलिए कहीं भी "myAnimal" apears, आप इसे "myCat" से बदल सकते हैं और एक ही परिणाम प्राप्त कर सकते हैं, क्योंकि मेरे एनीमल के अंदर सबकुछ मेरे कैट के अंदर सब कुछ जैसा ही है, इसलिए "myAnimal.staticMethod (4)" "myCat.staticMethod (4)" जैसा होना चाहिए और आउटपुट होना चाहिए: "बिल्ली: स्थिर - 4", समान ऊपर "myCat.staticMethod (1)" करने के लिए।
लेकिन ऐसा लगता है कि ऐसा क्यों नहीं है, क्यों?
यहां ग्रहण मुझे बता रहा है: 'प्रकार से स्थिर विधि staticMethod (int) को एक स्थिर तरीके से एक्सेस किया जाना चाहिए क्योंकि यह एक स्थैतिक विधि है, तब यह केवल माता-पिता से जुड़ा होता है जब आप इसे ओबीजे कहते हैं 'पशु' है। –
सांख्यिकी संकलन समय पर जुड़े हुए हैं। यही कारण है कि उन्हें – njzk2
ओवरराइड होने से रोकें, इसके कई बार पूछे जाने वाले एक डुप्लिकेट प्रश्न – madz