是不是是有點拗口哈,在剛開始的開發中,經常會碰到"無法訪問非靜態方法",如下:
Test.java
public Test{
public void notStatic(){
System.out.println("我訪問了非靜態方法");
}
public static void main(String[] args){
notStatic();//錯誤,無法訪問
}
}
解決辦法有二:
一 、設置其為靜態方法
//加入 static
public static void notStatic(){
System.out.println("我訪問了非靜態方法");
}
二、new 對象 引用方法
並不是什么時候都可以設置其為靜態方法,比如安卓開發中findViewById只能在非靜態方法中調用,那怎么辦呢.很簡單,new對象引用。
Test.java
public Test{
public void notStatic(){
System.out.println("我訪問了非靜態方法");
}
public static void main(String[] args){
//notStatic();//錯誤,無法訪問
Test test = new Test();
test.notStatic(); //引用
}
}
關於 static
此部分文章原文鏈接:JAVA菜鳥入門篇 - static關鍵字 (十三)
static方法
static方法一般稱作靜態方法,由於靜態方法不依賴於任何對象就可以進行訪問,因此對於靜態方法來說,是沒有this的,因為它不依附於任何對象,既然都沒有對象,就談不上this了。並且由於這個特性,在靜態方法中不能訪問類的非靜態成員變量和非靜態成員方法,因為非靜態成員方法/變量都是必須依賴具體的對象才能夠被調用。
但是要注意的是,雖然在靜態方法中不能訪問非靜態成員方法和非靜態成員變量,但是在非靜態成員方法中是可以訪問靜態成員方法/變量的。
