Пожалуйста, запустите выход ниже двух программ ...Почему ниже двух программ дает концептуально разные выходы?
Program_1:
package p1;
class x {
public void methodA() {
System.out.println("Methos A of Class X");
}
}
class y extends x {
public void methodA() {
System.out.println("Method A of Class Y");
}
}
class Override1 {
public static void main(String[] args) {
x obj1 = new x();
x obj2 = new y();
y obj3 = new y();
/* y obj4 = new x(); */
obj1.methodA();
obj2.methodA();
obj3.methodA();
/* obj4.methodA(); */
}
}
Program_2:
class x {
int a[] = new int[2];
x() {
a[0] = 10;
a[1] = 20;
}
}
class y extends x {
int a[] = new int[10];
y() {
a[0] = 12000;
a[1] = 1000;
a[2] = 120;
}
}
class Override2 {
public static void main(String[] args) {
x obj1 = new x();
x obj2 = new y();
// y obj3 = new x();
y obj4 = new y();
System.out.println(obj1.a[1]);
System.out.println(obj2.a[1]);
System.out.println(obj4.a[1]);
}
}
Мой конкретный вопрос заключается в том, что в Program_1 какими средствами MethodA от класс Y Вызывается? и в program_2 с помощью Что означает '20' (a [1]) от класс X называется?
Пожалуйста, очистите мою основную концепцию создания объекта относительно выделения памяти и задания ссылки.
Можете ли вы предоставить выход, а? – DeepInJava
вы не можете переопределить переменную в java, но вы можете переопределить метод. –
. Вам нужно задать более конкретный вопрос, чем *, пожалуйста, очистите мою основную концепцию создания объекта относительно выделения памяти и задания ссылки *. – TheLostMind