直接上代碼:
import java.util.Date;
public class Super_Keyword extends Date {
public static void main(String[] args) {
Super_Keyword sk = new Super_Keyword();
sk.test();
}
public void test() {
System.out.println(this.getClass().getName());
System.out.println(super.getClass().getName());
}
}
輸出結果如下:
Super_Keyword
這裡也許一不注意,就認為輸出結果是Super_Keyword和Date。
這個getClass()實在Object中定義的,其聲明為了final native 。也就是說該方法是不能被子類覆寫的。是以this.getClass()與super.getClass()實際上都是調用的同一個方法,都是得到調用者的Class 對象。是以兩行代碼的輸出都是 Super_Keyword。
如果想要得到父類的類名,需要使用this.getClass().getSuperClass().getName();
其實犯上面的錯的原因就是不夠仔細,被那個super給忽悠了。