1.因为this代表的是调用这个函数的对象的引用,super是对父类对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载后,对象还不一定存在.所以在先存在的静态方法里调用未存在的对象是不对的.
2.静态方法是存放在内存中的数据段里,this和super调用的是堆空间里的应用对象,不能调用数据段区域里的数据,因此静态方法中不能用this和super关键字.
3.this和super是属于对象范畴的东西,而静态方法是属于类范畴的东西,所有的成员方法,都有一个默认的的参数this,只要是成员方法,编译器就会给你加上this这个参数如:
Class A中的
void print(){}; ----->其实是void print(A this);
而静态方法是和类相关的,它不是成员方法,所以不能引用this对象.
综上可得!
|