다음 자바 프로그램에서 ㉠에 넣을 수 있는 문장과 그 결과 ㉡의 문장에… | [국회직 9급 컴퓨터일반] 16년 1회차 기출문제 상세 페이지
1[국회직 9급 컴퓨터일반] 16년 1회차
다음 자바 프로그램에서 ㉠에 넣을 수 있는 문장과 그 결과 ㉡의 문장에 의해 출력되는 결과가 모두 옳은 것은?class Person {
String name;
public Person(String n) { name = n; }
public void whoRU() {
System.out.println(name+"입니다.");
}
}
class Student extends Person {
String school;
public Student(String n, String s) {
super(n);
school = s;
}
public void whoRU() {
System.out.println(school+"학교에 다니는 "+name+"입니다.");
}
}
public class People {
public static void main(String args[]) {
㉠
obj.whoRU();
} ㉡
}
1
㉠의 문장 : Person obj = new Student("김철수", "으뜸중"); ㉡의 출력 : 김철수입니다.2
㉠의 문장 : Student obj = new Person("김철수"); ㉡의 출력 : 김철수입니다.3
㉠의 문장 : Person obj = new Student("김철수", "으뜸중"); ㉡의 출력 : 으뜸중학교에 다니는 김철수입니다.4
㉠의 문장 : Student obj = new Student("김철수", "으뜸중"); ㉡의 출력 : 김철수입니다.5
㉠의 문장 : Student obj = new Person("김철수"); ㉡의 출력 : 출력이 되지 않음해설
Person 타입 변수에 Student 객체를 대입한 문장과 으뜸중학교 출력을 함께 제시한 조합이 옳다.
부모 타입 변수로 자식 객체를 참조하는 업캐스팅은 허용되고, 재정의된 메소드는 실제 객체 기준으로 호출되는 동적 바인딩이 적용된다. 따라서 Student의 whoRU()가 실행된다.
- Person 변수에 Student 객체를 넣고 '김철수입니다.'가 출력된다는 조합: 재정의된 Student의 메소드가 호출되므로 출력이 틀리다.
- Student 변수에 new Person을 넣고 '김철수입니다.'가 출력된다는 조합: 부모 객체를 자식 타입 변수에 대입할 수 없어 컴파일 오류이다.
- Student 변수에 Student 객체를 넣고 '김철수입니다.'가 출력된다는 조합: Student의 메소드가 실행되어 학교 이름까지 출력되므로 틀리다.
- Student 변수에 new Person을 넣고 출력이 되지 않는다는 조합: ㉠의 문장 자체가 컴파일되지 않아 넣을 수 있는 문장이 아니다.
오류나 개정된 내용이 보이면 알려주세요