非静态的方法(不带static关键字),可以访问静态方法,但是静态方法却不可以访问非静态的方法,为什么呢?
其实这个原理很简单,在解释原理之前,先看一下static关键字的特点:
- 随着类的加载而加载,可就是说把类加载到内存中的时候,static关键字修饰的资源就一起加载了.
- 优先于对象的存在
- 直接通过 类名. 出来
- ......
上面的第一点就已经说明了原因,静态资源在类加载就已经加载进了内存,这时候非静态的资源还没有进行加载,所有是调用不到的.反过来就是可以调用的,在实例化对象的时候,静态的资源已经存在了.
上面还可以看出在静态的方法中不能使用super this等关键字.