静态方法不能调用非静态方法的原因

1.静态方法优先于对象被创建

2.非静态方法通过对象创建

3.静态方法在内存中创建后,还没有创建对象,所以不能调用非静态方法和变量。

//null 类型调用静态方法,输出什么?

public class Test{

private static void Print(){
System.out.println("Print()");
}

public static void main(String[] args) {

((Test)null).Print();

}

}

扫描二维码关注公众号,回复: 1057420 查看本文章

问输出什么?

//输出是Print()

因为:1.Print()是静态方法,不用对象也可以调用,((Test)null).Print() 这种格式也可以。

          2.null 可以转换成任意引用类型

          3.((Test)null).Print() 相当于 Test t = null; t.Print();

          4.如果将Print()方法的修饰符去掉,执行时会报空指针异常,因为是在静态方法中调用非静态方法。

猜你喜欢

转载自blog.csdn.net/nextfailure/article/details/80375521