모두CBT

24-3아래 Java 프로그램이 출력하는 값을 적으시오.class Pa… | 2024년 정보처리기사실기 3회차 기출문제 상세 페이지

1

24-3

아래 Java 프로그램이 출력하는 값을 적으시오.

class Parent {
    int n = 4;
    int calc() {
        return n + 1;
    }
}

class Child extends Parent {
    int n = 9;
    int calc() {
        return n * 2;
    }
}

public class Main {
    public static void main(String[] args) {
        Parent a = new Child();
        Child b = new Child();
        System.out.print(a.n + a.calc() + b.n - b.calc());
    }
}
해설

13


[해설]

메서드는 실제 객체 기준(동적 바인딩)으로, 필드는 참조 변수의 선언 타입 기준으로 결정된다.

  • a.n: a의 타입이 Parent이므로 Parent의 n → 4
  • a.calc(): 실제 객체가 Child라 오버라이딩된 Child.calc() → 9 × 2 = 18
  • b.n: Child의 n → 9
  • b.calc(): 18

4 + 18 + 9 − 18 = 13이 출력된다. 자식이 같은 이름으로 다시 선언한 필드는 부모 필드를 숨길 뿐 오버라이딩되지 않는다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.