제 홈페이지의 모든 글은 anti-nhn license에 따릅니다.



java.lang.Object 메쏘드 분석 1 - getClass

java.lang.Object에는 신기한 메쏘드들이 많습니다. 일반적인 자바 코드와는 다르게 작동하는 것들도 많습니다.
자바의 기초 중 하나가 모든 클래스는 암묵적으로 java.lang.Object를 상속받는다는 것입니다만, java.lang.Object에 있는 메쏘드를 분석해 놓은 글은 찾기가 쉽지가 않더군요. 그래서 한번 정리를 하고 넘어가려고 합니다. 첫번째로 getClass()메쏘드 입니다.

public class Test{
    public static void main(String[] arg){
        Test a= new Test();
        System.out.println(a.getClass());
    }
}

위의 코드를 실행시키면, class Test라고 나옵니다. Object에 정의된 getClass()가 설마 Test 클래스를 리턴하는 것은 아니겠지요. 런타임에 getClass()를 호출한 클래스의 java.lang.Class 타입을 리턴하는 것입니다. System.out.println(a.getClass());코드는 자동으로 System.out.println(a.getClass().toString()); 으로 변환되어 출력된 것입니다. a.getClass()가 String으로 리턴되는 것이 아닙니다.

다음 코드는 어떤 결과가 나올까요?

public class A{
    protected void printClass(){
        System.out.println(getClass());
    }
}

public class B extends A{
    public void print(){
        printClass();
    }
}

public class Test2 {

    public static void main(String[] args) {
         B b = new B();
         b.print();
    }
}

"class B"가 찍힙니다. 런타임에 호출한 클래스는 A가 아니라 B이기 때문입니다.

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 삼실청년 | 2007/12/11 01:56 | 컴터질~ | 트랙백(1) | 덧글(0)

트랙백 주소 : http://iilii.egloos.com/tb/3999011
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from Luv H..♡ at 2008/01/23 22:31

제목 : [펌] java.lang.Object 메쏘드 분석 ..
java.lang.Object 메쏘드 분석 1 - getClass...more

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶