2017-01-17 91 views
1

運行時此代碼的錯誤 獲取錯誤 - 非靜態變量,無法從靜態上下文中引用我應該如何解決此代碼獲取錯誤 - 非靜態變量,不能從靜態上下文中引用

class Testy { 
    void girl() 
    { 
     System.out.println("Black girl"); 

    } 

    class Testy1 extends Testy 
    { 
     void girl() 
     { 
      System.out.println("White girl"); 

     } 
    } 

    public static void main(String[] args) { 
     Testy p=new Testy1(); 
     p.girl(); 
    } 

} 
+5

的可能的複製[非靜態變量不能從靜態上下文中引用(HTTP://計算器.com/questions/2559527/non-static-variable-can-be-references-from-a-static-context) –

+0

問題是'Testy1'是'Testy'的內部類而不是'static'。因此,'Testy1'在創建時需要一個'Testy'的實例,這在'main'中是不可用的。內部類是一個有點先進的概念,所以我建議你把每個類放在它自己的源文件中開始 –

+0

好的測試例子 –

回答

0

這裏是正確的代碼。

使你的Testy1類成爲靜態的,因爲它是一個內部類。

class Testy { 
void girl() 
{ 
    System.out.println("Black girl"); 

} 

static class Testy1 extends Testy 
{ 
    void girl() 
    { 
     System.out.println("White girl"); 

    } 
} 

public static void main(String[] args) { 
    Testy p=new Testy1(); 
    p.girl(); 
} 

} 
0

如果你想用內部類,那麼你必須調用函數如下

class Testy { 
     void girl() 
     { 
      System.out.println("Black girl"); 

     } 


     class Testy1 extends Testy 
     { 
      void girl() 
      { 
       System.out.println("White girl"); 

      } 
     } 


    public static void main(String[] args) { 
     Testy t = new Testy(); // first create object of outer class 
     Testy.Testy1 t1 = t.new Testy1(); //using t create object of inner class 
     t1.girl(); 
    } 
} 
相關問題