2017-01-17 56 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(); 
    } 
} 
相关问题