getClass
public final Class<?> getClass()
返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。
Java的引用变量有两个类型,编译时类型和运行时类型。
1.编译时类型由声明该变量时使用的类型决定。
2.运行时类型由实际赋给该变量的对象决定。
getName
public String getName()
以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
实体:对象引用的目的地
例子一:
public class StudentDemo {
public static void main(String[] args) {
Student ss = new StudentSon();
System.out.println(ss.getClass().getName());
}
}
该类编译时类型为Student ,运行时类型为StudentSon ,则ss.getClass()返回StudentSon类
运行结果:StudentSon
例子二:
输出结果是什么:
package test;
import java.util.Date;
public class SuperTest extends Date{
private static final long serialVersionUID = 1L;
private void test(){
System.out.println(super.getClass().getName());
}
public static void main(String[]args){
new SuperTest().test();
}
}
1.SuperTest和Date 的getClass都没有被重写,他们调用的都是object的getClass()方法 ,而Object的getClass作用是返回的是运行时的类的名字,这个运行时的类就是当前类,所以
super.getClass().getName()
返回的是SuperTest 类 与Date类无关
2.在调用getName()方法而getName()是:包名+类名
3.所输出结果为: test.SuperTest.