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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 4968547610317 于 2013-6-5 17:14 编辑


public class Test {
/**
  * @param args
  */
public static void main(String[] args) {
  show3();//调用静态方法   为什么不能调用非静态方法
    }
public void show1(){
  System.out.println("show1");
  show2();//调用非静态方法    这里却可以
}
public void show2(){
  System.out.println("show2");
}
public static void show3(){
  System.out.println("show3");
}
}


9 个回复

倒序浏览
静态方法只能调用静态方法,非静态的方法都可以调用。
因为静态方法在对象创建之前就已经存在于方法区内的,而非静态的方法只有在创建对象后才加载到堆内存里,静态方法又能去哪里调用非静态的函数呢?
回复 使用道具 举报
小冰块 发表于 2013-6-5 17:10
静态方法只能调用静态方法,非静态的方法都可以调用。
因为静态方法在对象创建之前就已经存在于方法区内的 ...

谢了,老是把这个弄错...
回复 使用道具 举报
j静态方法是对象没有new出来就可以调用的,而非静态方法要new出对象才可以调用,静态方法里面不能调用非静态方法,除非你自己在类里面建立个对象!
回复 使用道具 举报
主函数是静态的,所以调用的方法只能是静态的,而show1是非静态的,所以可以调用非静态的.
回复 使用道具 举报
静态方法随类的的加载而加载,这就是为什么main函数需要定义为static,为了让JVM能找到程序入口。
main函数是静态的,所以它只能调用本类中静态的方法。
回复 使用道具 举报
小白刚刚想到这个问题,现在是明白了.意思就是非静态方法只有在对象建立后,才能加载到内存里,而静态随着类的加载而加载,那就当然非静态能调用静态!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马