[java]靜態方法訪問非靜態方法的方法


是不是是有點拗口哈,在剛開始的開發中,經常會碰到"無法訪問非靜態方法",如下:

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了。並且由於這個特性,在靜態方法中不能訪問類的非靜態成員變量和非靜態成員方法,因為非靜態成員方法/變量都是必須依賴具體的對象才能夠被調用。

  但是要注意的是,雖然在靜態方法中不能訪問非靜態成員方法和非靜態成員變量,但是在非靜態成員方法中是可以訪問靜態成員方法/變量的。


免責聲明!

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



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