静态方法中问什么不能使用this、super关键字。

  • 感性方面

  首先区分类和对象,对象是类的一个实例。也就是对象会有多个而类只有一个。

  1. 静态方法是类中拥有的。
  2. this代表当前对象。
  3. super代表当前对象的父类对象。

可以看出来静态方法只有一个,而this、super是多个。

  • 理性方面

内存加载顺序是不同的,内存先加载类再此同时会将静态方法加载。而此时对象没有产生,所有会有空指针。

public class A {


	private String a;


	public A() {
		System.out.println("创建对象");
	}
	
	public String getA() {
		return a;
	}


	public void setA(String a) {
		this.a = a;
	}
	
	public void print() {
		System.out.println("打印方法执行");
	}
}
 
 
public class ServerController extends A{
	public static void main(String[] args) {
		A a = new A();
		a.print();
	}
	public static void p() {
		super.print();
	}
}

如上述代码,加载ServerController类时main、p方法被加载。而A的类已经被加载了,但是A的对象没有被创建。所以super.print();会报错。

猜你喜欢

转载自blog.csdn.net/itqiulijun/article/details/80521540