JAVA 里既然静态方法无法调用非静态方法,那主方法main 里面,为什么可以通过对像,来调用非静态方法的呢

是不能调用,还是不能直接调用?... 是不能调用,还是不能直接调用? 展开
 我来答
wang_wenshuai
推荐于2017-09-15 · TA获得超过473个赞
知道小有建树答主
回答量:149
采纳率:100%
帮助的人:153万
展开全部
  静态方法不可以调非静态全局变量,从内存的角度看,就是当类被加载的时候静态方法和静态属性(全局静态变量)被加载到内存中,就是在内存中开辟一段内存地址用来保存静态方法和静态属性,这时候没有被实例化的类在内存中是不存在的,所以静态方法是不能访问非静态的全局变量。在类被实例化的时候,就是new 某个类的时候,在内存中给这个类开辟一些内存空间保存这个类的对象,这个时候就可以用静态方法去访问非静态的全部变量。
追问
当类被实例化的时候,也就是拥有自己的对像的时候,是不是用自己的这个对像在静态方法里,去调用非静态方法或者属性。这个时候就不是直接调用了,对吗?
追答
类在main函数被实例化的时候,已经在内存里开辟空间保存这个类对象了,静态方法就可以调用了。

说白里你在main函数了实例化了对象,对象其实就是该函数的局部变量了。方法的局部变量,当然能访问。
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式