在方法中:this代表的是调用此方法的对象。
而静态成员(方法和变量)都是随着类的加载而存在的,类加载了,但不一定就有对象
也就是说,静态成员是优先于对象存在于内存中的
假如:在加载类时,某个静态方法需调用含有this的静态方法;那么这个this指代什么呢~jvm不知道就报错了
所以:静态方法中是不可以存在this的(super也是同理)。其实静态成员可以被类名直接调用的,所以不管this可不可以在静态方法中调用静态成员(实际上也是不可以的),这个都是多余的
按楼主的意思写了如下代码:
class ThisTest
{
public static void main(String[] args)
{
Person p=new Person();
p.show();
}
static class Person
{
public static int age=30;
public static void show()
{
System.out.println("Person Age:"+this.age);//当把this去掉后就可以了
}
}
}
结果当然是编译没通过:无法从静态上下文中引用非静态变量
关于this和super的一些详细用法可以参考我的日记:
http://user.qzone.qq.com/2798043851/2