Question 21 : 추상클래스

Given:
11. public abstract class Shape {
12.     int x;
13.     int y;
14.     public abstract void draw();
15.     public void setAnchor(int x, int y) {
16.         this.x = x;
17.         this.y = y;
18.     }
19. }

and a class Circle that extends and fully implements the Shape class.
Which is correct?

A. Shape s = new Shape();
    s.setAnchor(10,10);
    s.draw();
B. Circle c = new Shape();
    c.setAnchor(10,10);
    c.draw();
C. Shape s = new Circle();
    s.setAnchor(10,10);
    s.draw();
D. Shape s = new Circle();
    s->setAnchor(10,10);
    s->draw();
E. Circle c = new Circle();
    c.Shape.setAnchor(10,10);
    c.Shape.draw();


[HeadFirst Java - p.234]
어떤 클래스의 인스턴스를 만들 수 없게 하는 간단한 방법이 있습니다. 즉 특정 유형에 대해 "new" 키워드를 쓸 수 없게 하는 방법입니다. 클래스를 abstract로 지정하면 컴파일러에서 그 유형의 인스턴스를 만드는 코드를 허용하지 않습니다. 하지만 그 추상 유형(abstract type)을 레퍼런스로 사용할 수 있습니다. 사실 그렇게 레퍼런스로 사용하는 것이 바로 이런 추상 클래스를 만드는 핵심적인 이유 중의 하나라고 볼 수 있습니다.


Answer: C
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q020. 내부 무명 클래스  (0) 2008.04.30
Q019. 클래스의 형변환  (0) 2008.04.13
Q018. 인터페이스  (0) 2008.04.13
Q017. import static  (0) 2008.04.11
Q016. 내부클래스  (0) 2008.04.04

+ Recent posts