 
		wangyt
2015-07-07 12:26
class A
{
	public String name = "01";
}
class B extends A
{
	public String name = "02";
	public void testM()
	{
		//System.out.println(this.name + "," + super.name);
		System.out.println(this.getClass().getSimpleName() + "\n" + super.getClass().getSimpleName());
	}
}
class ThisSuper
{
	public static void main(String[] args)
	{
		B b = new B();
		b.testM();
	}
}输出结果:
B B
super既然指向子类的父类引用,为什么程序打印出子类呢?
 
				不管是this.getClass()还是super.getClass(),最终都指向了Object对象的getClass(),这个方法是final的不能被子类重写。根据API定义,getClass()返回对象在运行时的类型,运行时的类型是B,所以返回类型也是B。
 
				this指当前类 是锁定了其他对象的   而且你这里是找的类名的嘛     你想找里面的常量是不  你找name就不一样了 少年
 
				getClass
public final Class<? extends Object> getClass()
返回一个对象的运行时类。该 Class 对象是由所表示类的 static synchronized 方法锁定的对象。
返回:
表示该对象的运行时类的 java.lang.Class 对象。此结果属于类型 Class<? extends X>,其中 X 表示清除表达式中的静态类型,该表达式调用 getClass。
那意思就是获取到的是正在运行时的类文件名。此时运行的只有B类!
Java入门第二季
531292 学习 · 6327 问题
相似问题