2013년 9월 13일 금요일

(JAVA생성자,JAVA7강좌,JAVA1.7교육)자바 생성자에서 오버라이드된 메소드를 호출, JAVA Constructor

(JAVA생성자,JAVA7강좌,JAVA1.7교육)자바 생성자에서 오버라이드된 메소드를 호출, JAVA Constructor


오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  


생성자에서 오버라이드된 메소드를 호출

아래의 클래스가 있다고 했을 때

Class 하위클래스 {
    int i=0;

    //생성자
    하위클래스() {
        i = 10;
    }

    void display() {
        System.out.println(“i = “ + i);
}
}

class 슈퍼클래스 {
    //생성자
    슈퍼클래스() {
        display();
    }

    Void display() {
        System.out.println(“여긴 상위 클래스…”);
    }
}

하위클래스의 인스컨스를 NEW 하는 시점에 어떤 결과가 나오는 지를 추측해 보면…
위 클래스에서 상위클래스에서 display()란 메소드를 호출하는데 이 메소드는 하위 클래스에서 재정의(override)한 메소드 인 것을 확인 할 수 있는데 자바에서는 오버라이드된 하위클래스의 display() 메소드가 실행됩니다.

new 하위클래스()를 실행하게 되면 하위클래스의 생성자를 실행하기 전에 상위클래스의 생성자가 실행되므로 결과적으로 하위쿨래스의 display() 함수가 실행되어 “i = 0”으로 나타날 겁니다.

참고로 C++이라면 이 같은 경우 비록 Override 된다고 하더라도 슈퍼클래스의 display()가 호출됩니다.

오라클자바커뮤니티 추천 실전 개발자 강좌 - 개인80%환급

[개강확정강좌]




댓글 없음:

댓글 쓰기