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