静态方法和非静态方法调用详解
1、静态方法不能直接调用非静态
2、非静态方法可以直接调用静态方法
原因:
静态方法和类一起加载,非静态方法只有在创建对象时才会加载。所以才有了静态方法不能直接调用非静态(因为静态方法加载时类还没有初始化也就还没有非静态方法),非静态方法可以直接调用静态方法(因为非静态方法加载时静态方法早就加载了)。
public class Demo02 {
public void run(){
System.out.println("Running");
//非静态方法可以直接调用静态方法
sleep();
}
public static void sleep(){
System.out.println("sleep");
}
public static void main(String[] args) {
//静态方法可以直接调用静态方法,或者通过类名.方法名调用
sleep();
Demo02.sleep();
//run();报错
}
}