제 홈페이지의 모든 글은 anti-nhn license에 따릅니다.
2007년 12월 11일
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이기 때문입니다.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- java.lang.Object 메쏘드 분석 4 - clone by 삼실청년
- java.lang.Object 메쏘드 분석 2 - equals by 삼실청년
- java의 synchronized 분석 by 삼실청년
- java.lang.Object 메쏘드 분석 3 - hashCode by 삼실청년
- error : java.lang.ClassCastException by 달바라기
# by | 2007/12/11 01:56 | 컴터질~ | 트랙백(1) | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
제목 : [펌] java.lang.Object 메쏘드 분석 ..
java.lang.Object 메쏘드 분석 1 - getClass...more