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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么不可以从一个static方法内部发出对非static方法的调用?

3 个回复

倒序浏览
因为被static修饰的方法只有在该类对象创建出来的时候才会在内存中出现,被static修饰的方法是属于类,当类被加载到内存对象没被创建该方法同时被加载到内存中了,
直接从一个static方法内部发出对非static方法的调用,就会在内存中找不到那个非static的方法 所以不可以
回复 使用道具 举报
static是类的方法,成员方法是对象的方法,如果对象没有被创建 在static中方法成员方法,就会报错啊
回复 使用道具 举报
public class Test extends B implements C
{
    public void printfX()
    {
        System.out.println("B.x = " + super.x);

        System.out.println("C.x = " + C.x);

        play();
    }

    public static void main(String[] args)
    {
        // testForJPlusPlus();

        // testForIPlusPlus();

        // if we use the same code as C/C++, the result is different

        // testForCPlusPlus();

        new Test().printfX();

    }
}

这个怎么解释?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马