Super.GetClass()和GetSuperClass()区别

要想搞清楚上述问题首先我们必须的搞明白下面两个问题:

1、不管是Test的getClass()还是Date的getClass(),他们都是从Object继承来的
并且本类为覆盖。
2、Object类的getClass()官方解释:
返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 
static synchronized 方法锁定的对象。 
注意:返回的是运行时的类
那就说明这个方法返回的是当前调用该方法的类,即Test类,而Super.getClass()
只是调用了Date类的getClass(),但运行类还是Test,所以结果也就不足为怪了
如果想获取该类父对象,也就是上面这位兄弟所说的方法getClass().getSuperclass()
下面是代码:

import java.util.Date;
public  class Test extends Date{

        public static void main(String[] args) {
			new Test().test();
//            new Test().superClass();

        }
        
        public void test()
        {
			System.out.println(
				super.getClass().getName()
                );
//			System.out.println(
//				this.getClass().getName()
//          );
        }

		public  void superClass() {
			System.out.println(getClass().getSuperclass().getName());
		}
}

你可能感兴趣的:(getClass)