疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

java中this.getClass()和super.getClass()详解


 

 
今日遇到this.getClass()和super.getClass()的返回值感到疑惑,经过探索豁然开朗。
 getClass()是java中Object类的一个方法,其原型为:
         public final Class getClass()        
                         返回值为 当前运行时类的Class对象。
所以写了一段代码来说明:
            getClass()不受this和super影响,而是有当前的运行类决定的。
代码如下:
父类:
Java代码  
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());    
    }  
}  
 子类:
Java代码  
package com.cyou.lijiang_hw;  
  
public class UserDAO extends BaseDAO {  
    public UserDAO() {  
        System.out.println(" ==============UserDAO initialization=============");  
        System.out.println("this.getClass() ---->" + this.getClass());  
        System.out.println("super.getClass()---->" + super.getClass());  
    }  
}  
 测试类:
Java代码  
package com.cyou.lijiang_hw;  
  
public class Test {  
    public static void main(String[] args) {  
        UserDAO userDAO = new UserDAO();  
    }  
}  
 输出结果为:
Java代码  
==============BaseDAO 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