成旭元
2019-04-11 14:46
采纳率: 0%
浏览 2.0k

Java的静态方法里是不能调用非静态方法的,但为什么可以调用构造方法?

Java的静态方法里是不能调用非静态方法的,但为什么可以调用构造方法?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 迷路的公民 2019-04-11 15:30

    构造方法是特殊的方法,是类的初始化入口,是规定有的,就像我们建房子来住必须造门一样。静态方法为什么不能调用非静态方
    法,因为非静态方法必须要实例对象才能调用,但构造方法不需要,相反,实例对象还需要经过构造方法之后才能创建。如果一个
    门必须要从里面才能用,那这个门就没意义了。(当然门的举例,是无论多少个门只能使用一个门,这样才符合类的特性,毕竟类
    有多个构造方法,但每次只能用一个初始化)

    评论
    解决 7 无用
    打赏 举报
  • weixin_44904323 2019-04-11 15:17

    因为该类的静态方法是程序启动时自动放在内存中了的,是属于程序的公共内存(但只能访问),而类名在这里你可以理解为命名空间。

    评论
    解决 无用
    打赏 举报
  • qq_40802743 2019-04-11 15:22

    静态方法不可以调非静态全局变量,从内存的角度看,就是当类被加载的时候静态方法和静态属性(全局静态变量)被加载到内存中,就是在内存中开辟一段内存地址用来保存静态方法和静态属性,这时候没有被实例化的类在内存中是不存在的,所以静态方法是不能访问非静态的全局变量。在类被实例化的时候,就是new 某个类的时候,在内存中给这个类开辟一些内存空间保存这个类的对象,这个时候就可以用静态方法去访问非静态的全部变量。

    评论
    解决 1 无用 1
    打赏 举报
  • 瓦史托德 2019-04-11 15:51

    静态方法不需要实例化对象就可以调用,但非静态方法需要对象才能访问,构造方法用来实例化对象,不需要对象调用

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题