[7급 국가직 프로그래밍언어론 2011년 7번]

다음은 Java로 작성된 프로그램이다.
class Mammal {
   void mamma() {
      System.out.println("mamma");
   }
}
class Human extends Mammal {
   void speak() {
      System.out.println("speak");
   }
}
class ReferenceCast {
   public static void main(String args[]) {
      Mammal mammal;
      Human human;
      mammal = new Mammal();
      human = new Human();
      ㉠
   }
}
주어진 프로그램의 ㉠ 부분에 다음 <보기 1> 또는 <보기 2> 문장이 들어가는 경우에 대한 설명으로 옳은 것은?
 
<보기 1>
 
   
human = (Human)mammal;
human.mamma();
 
<보기 2>
 
   
mammal = human;
mammal.speak();
프로그래밍언어론
  1. ①㉠에 <보기 1>의 문장이 삽입될 경우, human은 Mammal 클래스의 객체를 참조하게 되므로 human.mamma(); 부분에서 문자열 “mamma”를 출력한다.
  2. ②㉠에 <보기 1>의 문장이 삽입될 경우, human = (Human)mammal; 부분에서 컴파일 오류는 발생하지 않지만, 실행시 예외(exception)가 발생한다.
  3. ③㉠에 <보기 2>의 문장이 삽입될 경우, mammal은 Human 클래스의 객체를 참조하게 되므로 mammal.speak(); 부분에서 문자열 “speak”를 출력한다.
  4. ④㉠에 <보기 2>의 문장이 삽입될 경우, Human 클래스와 Mammal 클래스는 클래스형(class type)이 서로 다르기 때문에 mammal = human; 부분에서 컴파일 오류가 발생한다.

선지를 골라 바로 채점해 보세요.

정답 ②

출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)

신고가 접수됐습니다. 감사합니다.

오류 신고