슈퍼.getClass()방법 호출

1104 단어 자바
자바 로 프로그램 을 쓸 때,때때로 우 리 는 현재 클래스 의 이름 을 얻 고 싶 고,때로는 현재 클래스 의 부모 클래스 의 이름 을 얻 고 싶 습 니 다.현재 클래스 의 이름 을 얻 으 면 getClass().gtName()을 직접 호출 할 수 있다 는 것 을 알 고 있 지만 다음 프로그램 을 생각 하 십시오.
import java.util.Date;

public class Super_getClass extends Date{
	public void test(){
		System.out.println(super.getClass().getName());		
	}
	
	public void test1(){
		System.out.println(getClass().getSuperclass().getName());
	}
	
	public static void main(String[] args) {
		
		new Super_getClass().test();  //  :Super_getClass
		
		new Super_getClass().test1(); //  :java.util.Date
	}
}

test()함 수 를 슈퍼.getClass().getName()로 호출 한 결 과 는 여전히 슈퍼 입 니 다.getClass???
그리고 test 1()함 수 는 getClass().getSuperclass().getName()으로 부모 클래스 이름 을 얻 습 니 다!!
원인 설명:getClass()는 Object 클래스 에서 final 로 정의 되 어 있 기 때문에 하위 클래스 는 이 방법 을 덮어 쓸 수 없습니다.그래서 test 방법 에서 getClass().getName()방법 을 호출 합 니 다.사실은 부모 클래스 에서 물 려 받 은 getClass()방법 을 호출 하 는 것 입 니 다.super.getClass().getName()을 호출 하 는 것 과 같 기 때문에 출력 은 현재 클래스 의 이름 입 니 다:SupergetClass。그리고 test 1()에서 의 방법 이 야 말로 진정 으로 아버지 류 의 내 이름 을 얻 은 것 이다.자바 util.Date.

좋은 웹페이지 즐겨찾기