阅读以下代码,请问最后输出的结果是多少?
问题分析:此题比较容易做错的是第一个输出语句,super.getClass().getName()。这个方法返回的是Test,因为getClass()在Object类中被定义为final了,其实this.getClass().getName()就是继承其父类而来的方法,和直接使用super.getClass().getName()没有任何区别,所以结果应该是Test。第二个输出语句显然是输出父类的名称,即java.util.Date。
import java.util.Date;
public class Test extends Date{
public static void main(String[] args){
new Test().test();
}
public void test(){
System.out.println(super.getClass().getName());
System.out.println(this.getClass().getSuperclass().getName());
}
}
问题分析:此题比较容易做错的是第一个输出语句,super.getClass().getName()。这个方法返回的是Test,因为getClass()在Object类中被定义为final了,其实this.getClass().getName()就是继承其父类而来的方法,和直接使用super.getClass().getName()没有任何区别,所以结果应该是Test。第二个输出语句显然是输出父类的名称,即java.util.Date。