2021/9/19-java静态方法与非静态变量

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了2021/9/19-java静态方法与非静态变量脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

问题来

在开学测试一个论文提交系统中频繁出现一个报错提示:Cannot make a static reference to the non-static method mainFrame() From the tyPE paperManagement

为解决这一问题,我找到了以下答案(参考来源:CSDN   原创:弹指江山)

 

java静态方法中不能引用非静态变量

静态方法和静态变量是属于某一个类,而不属于类的对象。

静态方法可以在没有创建实例时使用,而申明为非静态的成员变量是一个对象属性,所以它只有在对象存在时引用。因此,如果在对象未创建实例时在静态方法中调用了非静态成员方法就是非法的,所以编译器会在这时报出错误。总而言,静态方法可以不用创建对象就调用,非静态方法则必须通过对象的实例来进行调用,因此如果在静态方法中不通过实例就引用非静态方法,引用的是哪个对象的非静态方法就不确定,所以不能执行。只要不是static修饰的方法,必须要通过对象来进行引用。

如:

class test

{

int a=3;                                                    //非静态变量

public static void main(String[] args)       //静态方法

{

System.out.PRint(a);                                //成员变量不能直接调用,无法调用非静态变量a(a cannot be resolved to a VARiable)

}

}

因为静态方法的调用不是通过实例对象进行的,所以在静态方法中没有this指针,不能访问所属类的非静态变量和方法,只能访问方法体内的局部变量、自己的参数和静态变量,所以在static的主函数中调用非static的方法就是错的,应把方法放到另一个类,创建对象再调用,因为这个方法不是类的,即不是属于类的,而是属于具体的一个实例对象的。

记:

用static修饰的成员是属于类的,在static的方法里可以用类名直接调用,而不需要static修饰的成员是属于具体实例对象的,需要用对象名调用,且在static的方法里不可以调用。

2021/9/19-java静态方法与非静态变量

 

 

 

脚本宝典总结

以上是脚本宝典为你收集整理的2021/9/19-java静态方法与非静态变量全部内容,希望文章能够帮你解决2021/9/19-java静态方法与非静态变量所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。