본문 바로가기
카테고리 없음

정보처리기사 : 오버라이딩 코드 실행 결과

by 우 석 2024. 3. 21.

아래 문제를 보면 B 클래스의 생성자를 이용하여 A 클래스의 객체 변수  b를 생성한다.

main에서 b.paint를 호출하면 A의 paint 메서드를 호출할 거라고 생각하지만, 

메서드가 자식클래스에 오버라이딩 되어있기 때문에, 자식 클래스의 메서드가 대신 호출된다.

 

b.paint() 를 호출하면 B 클래스의 paint() 메서드를 호출하여 

BDCD 출력

 

b.darw() 를 호출하면 마찬가지로  B 클래스의 draw() 메서드를 호출하기 때문에

D 를 출력한다.

 

결과: BDCDD

public class main{
    public static void main(String[] args) {
        A b = new B();
        b.paint();
        b.draw();
    }
}
 
class A {
    public void paint() {
        System.out.print("A");
        draw();
    }
    public void draw() {
        System.out.print("B");
        draw();
    }
}
 
class B extends A {
    public void paint() {
        super.draw();
        System.out.print("C");
        this.draw();
    }
    public void draw() {
        System.out.print("D");
    }
}