详解java中this.getClass()和super.getClass()的实例
更新时间:2017年08月21日 17:01:37 投稿:lqh 我要评论
这篇文章主要介绍了详解java中this.getClass()和super.getClass()的实例的相关资料,需要的朋友可以参考下
详解java中this.getClass()和super.getClass()的实例
前言:
遇到this.getClass()和super.getClass()的返回值感到疑惑,经过探索豁然开朗。
getClass()是java中Object类的一个方法,其原型为:
?
1 | public final Class<?> getClass() |
返回值为 当前运行时类的Class对象。
所以写了一段代码来说明:
getClass()不受this和super影响,而是有当前的运行类决定的。
代码如下:
父类:
?
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()); } } |
测试类:
?
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(); } } |
输出结果为:
?
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()的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!