모두CBT

20-3아래 Java 프로그램의 출력 결과를 적으시오.abstract … | 2020년 정보처리기사실기 3회차 기출문제 상세 페이지

1

20-3

아래 Java 프로그램의 출력 결과를 적으시오.

abstract class Shape {
    String label;
    abstract String describe(int n);
    String describe() {
        return "Shape: " + label;
    }
    void setLabel(String s) {
        label = s;
    }
}

class Circle extends Shape {
    Circle(String s) {
        setLabel(s.toUpperCase());
    }
    String describe(int n) {
        return "Circle x" + n;
    }
    String describe(int[] arr) {
        return "Circle arr " + arr;
    }
}

public class Main {
    public static void main(String[] args) {
        Shape sh = new Circle("dot");
        System.out.println(sh.describe());
    }
}
해설

Shape: DOT


[해설]

sh의 선언 타입은 Shape지만 실제 객체는 Circle이다. Circle은 인자 없는 describe()를 재정의하지 않았으므로 부모 Shape의 describe()가 실행된다.

Circle 생성자에서 setLabel("dot".toUpperCase())가 호출되어 label에는 "DOT"이 저장된다. 따라서 "Shape: " + label의 결과인 Shape: DOT가 출력된다.

혼동 주의: describe(int)는 추상 메서드를 구현한 것이고 describe(int[])는 매개변수가 다른 오버로딩이라 인자 없는 호출과 관계없다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.