詳解java中this.getClass()和super.getClass()的實(shí)例
前言:
遇到this.getClass()和super.getClass()的返回值感到疑惑,經(jīng)過(guò)探索豁然開(kāi)朗。
getClass()是java中Object類的一個(gè)方法,其原型為:
1
|
public final Class<?> getClass() |
返回值為 當(dāng)前運(yùn)行時(shí)類的Class對(duì)象。
所以寫了一段代碼來(lái)說(shuō)明:
getClass()不受this和super影響,而是有當(dāng)前的運(yùn)行類決定的。
代碼如下:
父類:
1
2
3
4
5
6
7
8
9
10
11
|
package com.cyou.lijiang_hw; import java.lang.reflect.ParameterizedType; public class BaseDAO { public BaseDAO() { System.out.println( "==============BaseDAO initialization=============" ); System.out.println( "this.getClass() ---->" + this .getClass()); System.out.println( "super.getClass()---->" + super .getClass()); } } |
子類:
1
2
3
4
5
6
7
8
9
|
package com.cyou.lijiang_hw; public class UserDAO extends BaseDAO<User> { public UserDAO() { System.out.println( "\n==============UserDAO initialization=============" ); System.out.println( "this.getClass() ---->" + this .getClass()); System.out.println( "super.getClass()---->" + super .getClass()); } } |
測(cè)試類:
1
2
3
4
5
6
7
|
package com.cyou.lijiang_hw; public class Test { public static void main(String[] args) { UserDAO userDAO = new UserDAO(); } } |
輸出結(jié)果為:
1
2
3
4
5
6
7
|
==============BaseDAO<T> initialization============= this .getClass() ----> class com.cyou.lijiang_hw.UserDAO super .getClass()----> class com.cyou.lijiang_hw.UserDAO ==============UserDAO initialization============= this .getClass() ----> class com.cyou.lijiang_hw.UserDAO super .getClass()----> class com.cyou.lijiang_hw.UserDAO |
以上就是詳解java中this.getClass()和super.getClass()的實(shí)例,如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
原文鏈接:http://ljlowkey.iteye.com/blog/2029126