모두CBT

다음 자바 코드에서 오류가 발생하는 문장은?abstract class … | [7급 국가직 소프트웨어공학] 21년 1회차 기출문제 상세 페이지

1[7급 국가직 소프트웨어공학] 21년 1회차
다음 자바 코드에서 오류가 발생하는 문장은?
abstract class Shape {
  public void paint() { draw(); }
  abstract public void draw();
}
abstract class Circle extends Shape {
  public int radius;
  public Circle(int radius) {
    this.radius = radius; }
  double getArea() {
    return (3.14 * radius * radius); }
}
public class NamedCircle extends Circle {
  String name;
  public NamedCircle(int radius, String name) {
    super(radius);
    this.name = name;
  }
  public void draw() {
    System.out.println("반지름이 " +
                radius  + "인 원을 그리다.");
  }
  public static void main(String[] args) {
    Shape s;
    s = new Shape();
    NamedCircle w = new NamedCircle(5, "Ring");
    System.out.println(w.getArea());
    w.draw();
  }
}
1
super(radius);
2
Shape s;
3
s = new Shape();
4
System.out.println(w.getArea());
해설

오류가 나는 문장은 추상 클래스 Shape를 new로 생성하는 문장이다.

abstract 클래스는 구현되지 않은 메서드(draw)를 가지므로 직접 인스턴스화할 수 없다. 다만 추상 클래스 타입의 참조 변수 선언은 가능하다.

  • super(radius): Circle에 int 매개변수 생성자가 있으므로 정상 호출이다.
  • Shape s: 추상 클래스 타입 참조 변수 선언은 허용된다.
  • w.getArea() 출력: NamedCircle이 Circle의 getArea()를 상속받으므로 정상이며, draw도 NamedCircle에서 구현되어 객체 생성이 가능하다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[7급 국가직 소프트웨어공학] 21년 1회차 25문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요7급 국가직 소프트웨어공학 기출문제 암기장 전체 보기