23-1아래 Java 프로그램의 실행 결과를 적으시오.abstract … | 2023년 정보처리기사실기 1회차 기출문제 상세 페이지
5
23-1
아래 Java 프로그램의 실행 결과를 적으시오.
abstract class Device {
String label;
abstract public String info(int n);
public String info() {
return "Device:" + label;
}
public void setLabel(String s) {
label = s;
}
}
class Phone extends Device {
public Phone(String s) {
setLabel(s + "-X");
}
public String info(int n) {
return "Phone:" + n;
}
public String info(String s) {
return "Phone:" + s;
}
}
public class Main {
public static void main(String[] args) {
Device d = new Phone("Nova");
System.out.println(d.info());
System.out.print(d.info(3));
}
}해설
Device:Nova-X
Phone:3
[해설]
생성자에서 setLabel("Nova" + "-X")가 호출되어 label은 "Nova-X"가 된다.
d.info()는 매개변수가 없는 버전이다. Phone은 이 메서드를 재정의(오버라이딩)하지 않았으므로 Device의 구현이 실행되어 Device:Nova-X가 출력된다.
d.info(3)은 추상 메서드 info(int)를 Phone이 구현한 것이라 동적 바인딩으로 Phone:3이 된다. info(String)은 이름만 같은 오버로딩이며, Device 타입 참조로는 호출할 수 없다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.