为了账号安全,请及时绑定邮箱和手机立即绑定

static 静态方法使用

http://img1.sycdn.imooc.com//5a5d770e0001900507840675.jpg请问这里为什么不能用类名+方法名();调用

正在回答

3 回答

谁说的呀,静态方法即可以用对象调用,也可以用类名直接调用http://img1.sycdn.imooc.com//5a65c6da0001906e04500407.jpg

0 回复 有任何疑惑可以回复我~
#1

xcopfans

噢噢噢~我看错了不好意思,因为你的方法不是静态方法啊,用类名调用当然会失败了
2018-01-22 回复 有任何疑惑可以回复我~
#2

xcopfans

再跟你说深一点。在内存中,由static修饰的静态语句是随着着类一起加载的,无论是静态方法还是静态属性,或是静态代码块。 而普通方法,是由对象的创建才跟着加载进内存,所以只能是由对象调用。 这也就解释了为什么在静态方法中,不能使用非静态的东西,因为静态方法加载的时候,对象可能还没被创建,那它还调个球球哦!
2018-01-22 回复 有任何疑惑可以回复我~

这是我在百度上找的,希望对你有点帮助:

在静态方法中,不能直接访问非静态成员(包括方法和变量)。因为,非静态的变量是依赖于对象存在的,对象必须实例化之后,它的变量才会在内存中存在。例如一个类 Student 表示学生,它有一个变量String address。如果这个类没有被实例化,则它的 address 变量也就不存在。而非静态方法需要访问非静态变量,所以对非静态方法的访问也是针对某一个具体的对象的方法进行的。对它的访问一般通过 objectName.methodName(args……) 的方式进行。而静态成员不依赖于对象存在,即使是类所属的对象不存在,也可以被访问,它对整个进程而言是全局的。因此,在静态方法内部是不可以直接访问非静态成员的。

0 回复 有任何疑惑可以回复我~

运用对象名+方法名();运行是成功的,但是不明白为什么改成类名就不可以。


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530553    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

static 静态方法使用

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信