首先先看一下getClass()方法在API中的说明,getClass属于Object中的方法;
[code=c/c++]999999[/code]
public final Class<?> getClass()
-
返回此
Object
的运行时类。返回的Class
对象是由所表示类的static synchronized
方法锁定的对象。实际结果类型是
Class<? extends |X|>
,其中|X|
表示清除表达式中的静态类型,该表达式调用getClass
。 例如,以下代码片段中不需要强制转换:Number n = 0;
Class<? extends Number> c = n.getClass();
-
-
返回:
-
表示此对象运行时类的
Class
对象。
-
表示此对象运行时类的
有代码分析:
package com.qetch.base;
import java.util.Date;
class Test extends Date
{
public void test()
{
//System.out.println(super.getClass().getSuperclass().getName());//返回父类
System.out.println(super.getClass().getName());//返回子类
System.out.println(this.getClass().getName());//返回子类
}
}
public class GtName{
public static void main(String[] args) {
//new GtName().p();
new Test().test();
}
}
[/code
输出结果如下;
从结果中我们看到它没有输出父类Date而是输出了子类Test,从API中我们知道,getClass()返回的是运行时的对象,也就是调用test()方法的对象,因此输出以上结果,
当想输出父类Date时this.getClass().getSuperclass().getName()或者super.getClass().getSuperclass().getName()