黑马程序员技术交流社区
标题:
是否可以从一个static方法内部发出对非static方法的调用?
[打印本页]
作者:
刘海源
时间:
2012-7-23 13:12
标题:
是否可以从一个static方法内部发出对非static方法的调用?
从内存和对象两方面给讲讲奥
作者:
党巾水
时间:
2012-7-23 13:15
本帖最后由 刘馨琪 于 2012-7-23 13:17 编辑
不可以。先要有能调用非静态方法的对象,再用对象调用目标非静态方法。
因为静态先加载,静态内部有非静态,无法加载。
静态先存在于内存中,非静态此时没进内存,自然无法加载。
有了对象就不同了,对象在内存中,可以被静态调用。
所以静态中调用非静态,需要拥有此非静态的对象。这也是面向对象的基本思想,谁有数据,谁就对外提供操作这些数据的方法。
作者:
李东升
时间:
2012-7-23 13:24
可以是可以,给你看代码。
public class Tm {
/**
* @param arg
*/
public static void main(String[] args) {
System.out.println("静态方法");
new Tm().md();
}
public void md(){
System.out.println("被调用的非静态方法");
}
}
复制代码
静态方法想要掉用非静态的,必须是对象的实例,
作者:
杨文宇
时间:
2012-7-23 15:18
static 是类一装载就开始初始化了(想要调用非static方法),这时候还没有对象。而非static 的方法需要对象才能调用,所以这样会报错。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2