是否可以从一个 static 方法内部发出对非 static 方法的调用?
参考解答
不能直接调用,必须创建该对象实例才行。
非static方法(即成员方法或称为实例方法),必须由对象实例来调用执行。
但非static方法内部,可以直接使用static方法,因为static方法是属于类的,对该类所有实例都可见。
例1:
class A {
public static void m1() {
m2(); // 编译出错,可以修改为 new A().m2();
}
public void m2() {
}
}
例2:
class A {
public static void m1() {
}
public void m2() {
m1(); // 可以,其实是调用 A.m1() 省略了类名而已
}
}