报错!无法从静态上下文中引用非静态 变量
1 import java.awt.Point; 2 class rectangle 3 { int x1=0; 4 int y1=0; 5 int x2=0; 6 int y2=0; 7 8 rectangle point(int x,int y,int z,int w) 9 {x1= x; 10 y1= y; 11 x2= z; 12 y2= w; 13 return this; 14 } 15 16 public static void main(String[] args) 17 18 { rectangle experiment = new rectangle(); 19 experiment.point(1,2,3,4); 20 System.out.print(x1+" "+y1+" "+x2+" "+y2); 21 22 } 23 24 }
注意: 上述代码运行时:报错!无法从静态上下文中引用非静态 变量,原因是:静态主方法只能访问静态变量;如果要访问动态变量,必须将动态变量实例化。
import java.awt.Point; class rectangle { int x1=0; int y1=0; int x2=0; int y2=0; rectangle point(int x,int y,int z,int w) {x1= x; y1= y; x2= z; y2= w; return this; } public static void main(String[] args) { rectangle experiment = new rectangle(); experiment.point(1,2,3,4); System.out.print(experiment.x1+" "+experiment.y1+" "+experiment.x2+" "+experiment.y2); } }
以上程序运行正确。
说白了,就是在JAVA程序中,除了主静态方法以及类方法之外,其他在该类下定义的实例变量、实例方法,在主类方法中调用时必须要将其实例化,说白了就是要加上对象的引用:
比如: 某个对象.变量
某个对象.方法
1 import java.awt.Point; 2 class rectangle 3 { int x1=0; 4 int y1=0; 5 int x2=0; 6 int y2=0; 7 8 rectangle point(int x,int y,int z,int w) 9 {x1= x; 10 y1= y; 11 x2= z; 12 y2= w; 13 return this; 14 } 15 void printrectangle() 16 { System.out.print(x1+" "+y1+" "+x2+" "+y2); 17 } 18 public static void main(String[] args) 19 20 { rectangle experiment = new rectangle(); 21 experiment.point(1,2,3,4); 22 experiment.printrectangle(); 23 24 } 25 26 }
以上程序也可以实现相同的功能。