靜態方法和非靜態方法的區別


 首先,兩者本質上的區別是:靜態方法是在類中使用staitc修飾的方法,在類定義的時候已經被裝載和分配。而非靜態方法是不加static關鍵字的方法,在類定義時沒有占用內存,只有在類被實例化成對象時,對象調用該方法才被分配內存。
 
       其次,靜態方法中只能調用靜態成員或者方法,不能調用非靜態方法或者非靜態成員,而非靜態方法既可以調用靜態成員或者方法又可以調用其他的非靜態成員或者方法。
 
例子1:靜態方法的Main方法訪問類中的非靜態成員方法。
 
class Test{
public int sum(int a,int b){//非靜態方法
return a+b;
}
public static void main(String[] args){
int result=sum(1,2);//靜態方法調用非靜態方法
System.out.println("result="+result);
}
}
結論:以上程序在編譯時,會提示靜態方法不能引用非靜態方法的錯誤信息。(如下圖所示)
 
 
 
 
 
解決方法:
 
一、靜態方法只能訪問靜態方法和靜態成員。
 
class Test{
public static int sum(int a,int b){//加入static關鍵字,變成靜態方法
return a+b;
}
public static void main(String[] args){
int result=sum(1,2);//靜態方法調用靜態方法
System.out.println("result="+result);
}
}
二、非靜態方法要被實例化才能被靜態方法調用。
 
class Test{
public int sum(int a,int b){
return a+b;
}
public static void main(String[] args){
Test test=new Test();//實例化類
int result=test.sum(1,2);//調用非靜態方法
System.out.println("result="+result);
}
}


免責聲明!

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



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