静态方法不能直接访问非静态方法
1、main方法是静态方法,静态方法属于类方法,是类本身去调用,不是类的实例去调用
2、实例方法,不属于类的方法,所以必须依靠对象来调用
3、静态方法中访问另外一个普通方法,就只能创建一个对象,因为普通方法依靠对象调用
4、静态方法不能直接访问非静态方法,对于静态方法,一般是通过类名.方法名
调用
public class Test1 {
public void info(){
System.out.println("普通info方法");
}
public static void main(String[] args) {
/**
* main方法是静态方法,info是非静态的普通方法
* 因为静态方法属于类方法,是类本身去调用,不是类的实例去调用
* 所以省略this无法指向有效对象
*/
info(); //属于简写形式,默认是this.info
/**
* info属于实例方法,不属于类的方法,所以必须依靠对象来调用
* 而
* 在main方法中直接调用info方法,系统相当于使用this作为该方法的调用者
* this使用需要依靠对象,而现在还没有对象
* 而
* main方法是一个static修饰的方法,该方法属于类,不属于对象
* 所以调用static修饰的方法的主调的类本身
* 如果允许static修饰的方法出现this引用,那将导致this无法引用有效的对象
*/
}
}
如果确实需要在静态方法中访问另外一个普通方法,就只能创建一个对象
public class Test1 {
public void info(){
System.out.println("普通info方法");
}
public static void main(String[] args) {
new Test1().info();
}
}