今天学习Java时遇到了Cannot make a static reference to the non-static 问题,看了这位前辈的博客后豁然开朗,非常 感谢!
https://blog.csdn.net/q610376681/article/details/49359819
学习总结:
- java中静态方法不可以直接调用非静态方法和成员,也不能使用this关键字。
- java中不能将方法体内的局部变量声明为static。
原因解释:类中静态的方法或者属性,本质上来讲并不是该类的成员,在java虚拟机装在类的时候,这些静态的东西已经有了对象,它只是在这个类中”寄居”,不需要通过类的构造器(构造函数)类实现实例化;而非静态的属性或者方法,在类的装载是并没有存在,需在执行了该类的构造函数后才可依赖该类的实例对象存在。所以在静态方法中调用非静态方法时,编译器会报错(Cannot make a static reference to the non-static method func() from the type A)。
因此,在main中使用其他类时要创建一个它的实例,而不是直接调用这个类(main是静态的,要调用类的方法,就要在静态域创建该类的实例)。