为什么静态方法不能调用非静态方法?

1. 静态方法是属于类的,即静态方法是随着类的加载而加载的,在加载类时,程序就会为静态方法分配内存,而非静态方法是属于对象的,对象是在类加载之后创建的,也就是说静态方法先于对象存在。

2. 当你创建一个对象时,程序为其在堆中分配内存,一般是通过this指针来指向该对象。静态方法不依赖于对象的调用,它是通过‘类名.静态方法名’这样的方式来调用的。而对于非静态方法,在对象创建的时候程序才会为其分配内存,然后通过类的对象去访问非静态方法。

3. 因此在对象未存在时非静态方法也不存在,静态方法自然不能调用一个不存在(非静态)的方法。

具体实例见: 小静仔的博客

猜你喜欢

转载自blog.csdn.net/weixin_37519581/article/details/88052751