报错!无法从静态上下文中引用非静态 变量

 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    }   

以上程序也可以实现相同的功能。

 

posted @ 2015-12-20 17:45  lubocsu  阅读(14380)  评论(0编辑  收藏  举报