報錯!無法從靜態上下文中引用非靜態 變量


 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    }   

以上程序也可以實現相同的功能。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM