A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 擒贼先擒王 中级黑马   /  2014-12-17 21:32  /  1826 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

静态方法为什么不能调用非静态的成员变量和方法?即使在实例化对象后也不能调用,这到底是为啥?

14 个回复

倒序浏览
是内存划分决定的,他们不在一个区域。 所以互相看不到。

这是我的理解,具体是不是不知道。。{:3_56:}
回复 使用道具 举报
静态在的时候非静态还不在
回复 使用道具 举报
在没有创建对象时,非静态方法还没有加载,所以静态方法是调用不到非静态方法的。
回复 使用道具 举报
围观围观
回复 使用道具 举报
静态方法在类加载进内存是就加载好了,那时还没有对象的。所以不能调用非静态方法和属性。
回复 使用道具 举报
你创建了对象你当然知道,但是问题是程序不知道啊,所以就不让你调用了
回复 使用道具 举报
静态方法无法确认非静态的成员是否已经实例化,所以不能调用
回复 使用道具 举报 1 0
Static 方法和变量随着类的加载而加载。这个时候非静态的变量或者方法还没在内存空间中。只有创建了对象才会在内存中出现。
回复 使用道具 举报
楼主 弱弱的问一句, 怎么样实例化对象后调用,能写一下代码吗?我也挺疑惑的··
回复 使用道具 举报
楼主 弱弱的问一句, 怎么样实例化对象后调用,能写一下代码吗?我也挺疑惑的··
回复 使用道具 举报
因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,
回复 使用道具 举报
静态和非静态........
回复 使用道具 举报
Jennifer 发表于 2014-12-18 00:16
因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方 ...

嗯,所以java认为这样做是违法的:P,对不?了解了。。
回复 使用道具 举报
焦明坤 发表于 2014-12-18 08:15
静态和非静态........

是啊。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马