[code=Java]
public class {
public static void main(String[] args) {
m1();
}
public static void m1() {
m2();
m3();
}
public static void m2() {}
public static void m3() {}
}
[code]
为什么m1(),m2(),m3()上都要加上static呢?
public class {
public static void main(String[] args) {
m1();
}
public static void m1() {
m2();
m3();
}
public static void m2() {}
public static void m3() {}
}
[code]
为什么m1(),m2(),m3()上都要加上static呢?
public static void main(String[] args) {
Test test = new Test();
test.m1();
}
public void m1() {
m2();
m3();
}
public void m2() {}
public void m3() {}
}
这么说吧,我给你打个比方。
在我们正常调用方法的时候,要先实例化一个类的对象。
用对象去调用。对象名。方法名
但是当在同一个类中,想相互调用方法。就要用this。方法名(前提是非静态方法)
静态方法的调用要用类名。方法名。
注意,这个类名是可以省略的。所以你上面的写的啊a();b();就没有错误。
但是它的完整形式应该是 类名。静态方法名();
当同一个类中非静态方法之间调用的时候,也可以写车啊a();b();
这时候就应该是this.方法名();this表示当前对象。
还要注意的就是非静态方法调用静态方法要用类名。方法名();
不是不可以调用的。
用static 修饰的方法是类方法,类方法是提前加载的;而非静态的方法的调用是要在产生一个实例后才能调用,在加载静态方法时,并没有产生实例,所以就不能在静态方法里面调非静态方法。