- 感性方面
首先区分类和对象,对象是类的一个实例。也就是对象会有多个而类只有一个。
- 静态方法是类中拥有的。
- this代表当前对象。
- 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();会报错。