두 프로그램 아래의 출력을 실행하십시오 ...아래 두 프로그램이 개념적으로 다른 출력을 제공하는 이유는 무엇입니까?
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 class Y 전화가? 그리고 program_2에서 무엇을 의미합니까? '20'(a [1])은 입니다. 클래스 X이 호출됩니까?
메모리 할당 및 참조 지정과 관련된 객체 생성에 대한 기본 개념을 분명히하십시오.
:
두 번째 예는 동일하다? – DeepInJava
자바에서 변수를 오버라이드 할 수는 없지만 메소드를 오버라이드 할 수 있습니다. –
보다 구체적인 질문이 필요합니다. * 메모리 할당 및 참조 할당과 관련된 객체 생성에 대한 기본 개념을 삭제하십시오. – TheLostMind