黑马程序员技术交流社区

标题: static关键字问题 [打印本页]

作者: 擒贼先擒王    时间: 2014-12-17 21:32
标题: static关键字问题
静态方法为什么不能调用非静态的成员变量和方法?即使在实例化对象后也不能调用,这到底是为啥?


作者: noiary    时间: 2014-12-17 21:41
是内存划分决定的,他们不在一个区域。 所以互相看不到。

这是我的理解,具体是不是不知道。。{:3_56:}
作者: kenhe    时间: 2014-12-17 21:50
静态在的时候非静态还不在
作者: Honelyboy    时间: 2014-12-17 21:56
在没有创建对象时,非静态方法还没有加载,所以静态方法是调用不到非静态方法的。
作者: 吻痕朋    时间: 2014-12-17 22:00
围观围观
作者: lwh316658735    时间: 2014-12-17 22:10
静态方法在类加载进内存是就加载好了,那时还没有对象的。所以不能调用非静态方法和属性。
作者: jxlovqqvo    时间: 2014-12-17 22:17
你创建了对象你当然知道,但是问题是程序不知道啊,所以就不让你调用了
作者: fatesabering    时间: 2014-12-17 22:25
静态方法无法确认非静态的成员是否已经实例化,所以不能调用
作者: Jason996    时间: 2014-12-17 22:29
Static 方法和变量随着类的加载而加载。这个时候非静态的变量或者方法还没在内存空间中。只有创建了对象才会在内存中出现。
作者: 秦_奋    时间: 2014-12-17 22:38
楼主 弱弱的问一句, 怎么样实例化对象后调用,能写一下代码吗?我也挺疑惑的··
作者: 秦_奋    时间: 2014-12-17 22:40
楼主 弱弱的问一句, 怎么样实例化对象后调用,能写一下代码吗?我也挺疑惑的··
作者: Jennifer    时间: 2014-12-18 00:16
因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,
作者: 焦明坤    时间: 2014-12-18 08:15
静态和非静态........
作者: 擒贼先擒王    时间: 2014-12-18 08:32
Jennifer 发表于 2014-12-18 00:16
因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方 ...

嗯,所以java认为这样做是违法的:P,对不?了解了。。
作者: 擒贼先擒王    时间: 2014-12-18 08:35
焦明坤 发表于 2014-12-18 08:15
静态和非静态........

是啊。。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2