黑马程序员技术交流社区

标题: 是否可以从一个static方法内部发出对非static方法的调用? [打印本页]

作者: 刘海源    时间: 2012-7-23 13:12
标题: 是否可以从一个static方法内部发出对非static方法的调用?

从内存和对象两方面给讲讲奥
作者: 党巾水    时间: 2012-7-23 13:15
本帖最后由 刘馨琪 于 2012-7-23 13:17 编辑

不可以。先要有能调用非静态方法的对象,再用对象调用目标非静态方法。
因为静态先加载,静态内部有非静态,无法加载。
静态先存在于内存中,非静态此时没进内存,自然无法加载。
有了对象就不同了,对象在内存中,可以被静态调用。
所以静态中调用非静态,需要拥有此非静态的对象。这也是面向对象的基本思想,谁有数据,谁就对外提供操作这些数据的方法。
作者: 李东升    时间: 2012-7-23 13:24
可以是可以,给你看代码。
  1. public class Tm {

  2.         /**
  3.          * @param arg
  4.          */
  5.         public static void main(String[] args) {
  6.                 System.out.println("静态方法");
  7.                 new Tm().md();
  8.         }
  9.        
  10.         public void md(){
  11.                 System.out.println("被调用的非静态方法");
  12.         }
  13. }
复制代码
静态方法想要掉用非静态的,必须是对象的实例,
作者: 杨文宇    时间: 2012-7-23 15:18
static 是类一装载就开始初始化了(想要调用非static方法),这时候还没有对象。而非static 的方法需要对象才能调用,所以这样会报错。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2