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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 chenan0124 于 2013-12-16 14:37 编辑

是否可以从一个static方法内部发出对非static方法的调用?

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

6 个回复

倒序浏览
不可以!!!
因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部不能发出对非static方法的调用

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
static修饰的方法可以直接用类名调用
非static修饰的方法必须用类new出对象才能调用
当我们用类名直接调用时,可能这个类的对象并没有new。
如果这时候static方法里调用非static的方法就会出现空指针异常,
当然这种错误编译时就不会通过

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
1.静态方法中,可以访问静态成员
2.静态方法中不可以直接访问实例成员

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
声明非静态方法所在类的对象,通过对象.方法名调用
回复 使用道具 举报
不可以的。
因为static方法是和类关联起来的,在调用static方法时,直接用类名.方法名即可。
而非static方法是和对象关联起来的,使用非static方法之前,必须要实例化一个对象,再用对象名.方法名来调用非静态方法。
在静态方法里面是不能调用非晶态方法的,而在非静态方法里面是可以调用静态方法的。

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

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