请问:java中的静态方法为什么不能直接调用非静态的方法或属性?说的深入一点可以吗?最好联系内存分析,
答案:2 悬赏:40
解决时间 2021-02-14 20:09
- 提问者网友:無奈小影
- 2021-02-14 15:03
请问:java中的静态方法为什么不能直接调用非静态的方法或属性?说的深入一点可以吗?最好联系内存分析,
最佳答案
- 二级知识专家网友:冷态度
- 2021-02-14 15:28
不从内存方面而从令一方面给你解释。
我们从类和对象来分析就很好理解了。
类只是一次而方法和属性的集合的抽象,记住它时抽象的,它不能做任何事,要完成它定义的功能,必须有它的实例来完成。就像人类只是一个集合的抽象并不能做任何事,但是某个具体的人就可以做他能做的事。
同理静态的方法相当于自己本身就是一个“对象”,它无需实例化就能调用它的方法。而非静态方法则不能直接调用,需先实例化一个他的实例,再由它的实例来调用它里面的方法。
我们从类和对象来分析就很好理解了。
类只是一次而方法和属性的集合的抽象,记住它时抽象的,它不能做任何事,要完成它定义的功能,必须有它的实例来完成。就像人类只是一个集合的抽象并不能做任何事,但是某个具体的人就可以做他能做的事。
同理静态的方法相当于自己本身就是一个“对象”,它无需实例化就能调用它的方法。而非静态方法则不能直接调用,需先实例化一个他的实例,再由它的实例来调用它里面的方法。
全部回答
- 1楼网友:时光不老我们不分离
- 2021-02-14 16:23
静态方法在编译器在编译时会为其和其变量分配内存空间,如果引用了一个非静态的变量,那么在非静态变量作用结束后,这个变量就会消失,那么为它分配的那块内存就成了无用内存,但却无法回收,这样就造成了内存泄露,这样显然不合理。所以java中规定,静态方法不能直接调用非静态的方法或属性。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯