java:无法从静态上下文中引用非静态方法

编辑以下代码:

public class t{
    
    
	public int i;
	public void fun(){
    
    }
	public static void main(String...args){
    
    
		i=3;
		fun();
	}
}

编译:

javac t.java

得到以下报错:
在这里插入图片描述
原因:
在main函数中对类内部成员变量和方法进行调用是错误的,main方法为静态方法,而java中静态成员方法中不能引用非静态方法和变量
解决方法:
方法一:在构造函数中调用非静态方法和成员变量

public class t{
    
    
	public int i;
	t(){
    
    
		i=3;
		fun();
	}
	public void fun(){
    
    }
	public static void main(String...args){
    
    
	}
}

方法二:main方法中new一个对象,直接使用对象调用成员方法和变量

public class t{
    
    
	public int i;
	public void fun(){
    
    }
	public static void main(String...args){
    
    
		t t1=new t();
		t1.i=3;
		t1.fun();
	}
}

猜你喜欢

转载自blog.csdn.net/m0_60352504/article/details/120258759
今日推荐