정보처리기사 실기JavaJava - 추상클래스와 인터페이스난이도 5SHORT_ANSWER

정보처리기사 실기 Java - 추상클래스와 인터페이스 기출문제 #309

문제

다음 Java 코드의 실행 결과를 쓰시오.

Java
abstract class Animal { String name = "Animal"; abstract String sound(); String getName() { return name + "-Base"; } } interface Pet { String name = "Pet"; default String getName() { return name + "-Interface"; } } class Dog extends Animal implements Pet { String name = "Dog"; String sound() { return "Woof"; } String getName() { return super.name + "-" + Pet.super.getName(); } } public class Main { public static void main(String[] args) { Animal a = new Dog(); Pet p = (Pet) a; System.out.println(a.name + " " + p.name + " " + a.getName()); } }

정답

Animal Pet Animal-Pet-Interface

Animal Pet Animal-Pet-InterfaceAnimalPetAnimal-Pet-Interface

해설

  1. a.name: Animal 타입으로 선언되어 정적 바인딩으로 "Animal" 필드 참조
  2. p.name: Pet 인터페이스 타입으로 캐스팅되어 인터페이스 상수 "Pet" 참조
  3. a.getName(): Dog 클래스에서 오버라이딩된 메서드가 동적 바인딩됨. super.name은 Animal의 "Animal" 필드, Pet.super.getName()은 인터페이스의 default 메서드로 "Pet-Interface" 반환하여 "Animal-Pet-Interface"가 됨

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.