在靜態方法中訪問類的實例成員


1.示例程序

 1 public class Example
 2 {
 3  int x = 3;//類的實例變量,初始化值為3
 4  static int  y = 4;//類的靜態變量,初始化值為4
 5  public static void method()//靜態方法
 6   {   
 7    System.out.println("實例變量x = " + new Example().x);//在靜態方法中訪問類的實例變量需首先進行類的實例化
 8    System.out.println("靜態變量y = " + y);//在靜態方法中可直接訪問類的靜態變量
 9   }
10 
11  public static void main(String[] args) 
12     {
13          Example.method();
14          Example ex = new Example();
15         System.out.println("x = " + ex.x);
16     }
17 }

2.運行結果

 

3.結果分析

類中靜態的方法或者屬性,本質上來講並不是該類的成員,在java虛擬機裝在類的時候,這些靜態的東西已經有了對象,它只是在這個類中"寄居",不需要通過類的構造器(構造函數)類實現實例化;而非靜態的屬性或者方法,在類的裝載是並沒有存在,需在執行了該類的構造函數后才可依賴該類的實例對象存在。

在外部調用靜態方法時,可以使用"類名.方法名"的方式,也可以使用"對象名.方法名"的方式。而實例方法只有后面這種方式。也就是說,調用靜態方法可以無需創建對象。

靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變量和靜態方法),而不允許訪問實例成員變量和實例方法;實例方法則無此限制。

  public static void main(String[] args) 

{

  Example.method();

  Example ex = new Example();

System.out.println("x = " + ex.x);

}

}


免責聲明!

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



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