모두CBT

다음 Java 코드의 실행 결과는?class Car { public v… | [7급 국가직 소프트웨어공학] 25년 1회차 기출문제 상세 페이지

1[7급 국가직 소프트웨어공학] 25년 1회차
다음 Java 코드의 실행 결과는?
class Car {
public void type() {
System.out.println("Car");
}
}

class Truck extends Car {
public void type() {
System.out.println("Truck");
}
}

class Campingcar extends Truck {
public void type() {
super.type();
System.out.println("Camping car");
}
}

public class Main {
public static void main(String[] args) {
Car c = new Campingcar();
c.type();
}
}
1
Car
2
Camping car
3
Car
Truck
4
Truck
Camping car
해설

실행 결과는 Truck 다음 줄에 Camping car가 출력된다.

참조형이 Car여도 실제 객체가 Campingcar이므로 동적 바인딩에 따라 Campingcar의 type()이 호출된다. 그 안의 super.type()은 바로 위 부모인 Truck의 type()을 호출해 Truck을 출력하고, 이어서 Camping car를 출력한다.

  • Car만 출력: 참조 타입 기준으로 메소드가 선택된다고 착각한 결과다.
  • Camping car만 출력: super.type() 호출을 빠뜨린 결과다.
  • Car와 Truck 출력: Car의 type()은 하위 클래스에서 재정의되어 호출되지 않으며, Campingcar 자신의 출력도 빠졌다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[7급 국가직 소프트웨어공학] 25년 1회차 25문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요7급 국가직 소프트웨어공학 기출문제 암기장 전체 보기