黑马程序员技术交流社区

标题: 是否可以从一个static方法内部发出对非static方法的调用? [打印本页]

作者: chenan0124    时间: 2013-12-16 13:57
标题: 是否可以从一个static方法内部发出对非static方法的调用?
本帖最后由 chenan0124 于 2013-12-16 14:37 编辑

是否可以从一个static方法内部发出对非static方法的调用?
作者: 刘安成    时间: 2013-12-16 14:08
不可以!!!
因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部不能发出对非static方法的调用
作者: 鸡蛋壳    时间: 2013-12-16 14:08
static修饰的方法可以直接用类名调用
非static修饰的方法必须用类new出对象才能调用
当我们用类名直接调用时,可能这个类的对象并没有new。
如果这时候static方法里调用非static的方法就会出现空指针异常,
当然这种错误编译时就不会通过
作者: y494890511    时间: 2013-12-16 16:26
1.静态方法中,可以访问静态成员
2.静态方法中不可以直接访问实例成员
作者: 黑色海    时间: 2013-12-16 22:03
声明非静态方法所在类的对象,通过对象.方法名调用
作者: 如远行客    时间: 2013-12-17 08:44
不可以的。
因为static方法是和类关联起来的,在调用static方法时,直接用类名.方法名即可。
而非static方法是和对象关联起来的,使用非static方法之前,必须要实例化一个对象,再用对象名.方法名来调用非静态方法。
在静态方法里面是不能调用非晶态方法的,而在非静态方法里面是可以调用静态方法的。




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