黑马程序员技术交流社区
标题:
求解为什么主函数内部能直接掉用非静态方法 而非静态方...
[打印本页]
作者:
夜默
时间:
2013-6-5 17:02
标题:
求解为什么主函数内部能直接掉用非静态方法 而非静态方...
本帖最后由 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");
}
}
作者:
小冰块
时间:
2013-6-5 17:10
静态方法只能调用静态方法,非静态的方法都可以调用。
因为静态方法在对象创建之前就已经存在于方法区内的,而非静态的方法只有在创建对象后才加载到堆内存里,静态方法又能去哪里调用非静态的函数呢?
作者:
夜默
时间:
2013-6-5 17:12
小冰块 发表于 2013-6-5 17:10
静态方法只能调用静态方法,非静态的方法都可以调用。
因为静态方法在对象创建之前就已经存在于方法区内的 ...
谢了,老是把这个弄错...
作者:
画饼
时间:
2013-6-5 17:13
j静态方法是对象没有new出来就可以调用的,而非静态方法要new出对象才可以调用,静态方法里面不能调用非静态方法,除非你自己在类里面建立个对象!
作者:
闫月乐
时间:
2013-6-5 17:56
主函数是静态的,所以调用的方法只能是静态的,而show1是非静态的,所以可以调用非静态的.
作者:
花心々小土豆
时间:
2013-6-6 08:37
静态方法随类的的加载而加载,这就是为什么main函数需要定义为static,为了让JVM能找到程序入口。
main函数是静态的,所以它只能调用本类中静态的方法。
作者:
夕风秋凉
时间:
2015-10-15 21:52
小白刚刚想到这个问题,现在是明白了.意思就是非静态方法只有在对象建立后,才能加载到内存里,而静态随着类的加载而加载,那就当然非静态能调用静态!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2