Java 如何修复错误:非静态变量不能从Horse d=new Horse()附近的静态上下文引用该变量;

Java 如何修复错误:非静态变量不能从Horse d=new Horse()附近的静态上下文引用该变量;,java,inheritance,Java,Inheritance,我得到一个错误,非静态变量this不能从静态上下文引用:Horse d=new Horse() 您有两种解决方案: 在动物类之外声明您的类 或者将您的类声明为static静态类{..} 您有两种解决方案: 在动物类之外声明您的类 或者将您的类声明为static静态类{..} 您的Horse类是Animal类的内部类,这意味着它需要一个封闭的Animal实例才能被实例化 这毫无意义。只需将马类移出动物类即可 public class Animal { public void soun

我得到一个错误,非静态变量this不能从静态上下文引用:
Horse d=new Horse()


您有两种解决方案:

  • 动物
    类之外声明您的类
  • 或者将您的类声明为static
    静态类{..}

  • 您有两种解决方案:

  • 动物
    类之外声明您的类
  • 或者将您的类声明为static
    静态类{..}

  • 您的
    Horse
    类是
    Animal
    类的内部类,这意味着它需要一个封闭的
    Animal
    实例才能被实例化

    这毫无意义。只需将
    类移出
    动物
    类即可

    public class Animal 
    {  
        public void sound()
        {
            System.out.println("sounds");
        }
    }
    
    public class Horse extends Animal
    {
        public void run() 
        {
            System.out.println("neigh");
        }
    }
    

    main
    方法放在何处取决于您,但基本
    Animal
    类了解其
    Horse
    子类的意义不大,因此,我不会在
    Animal
    类的代码中创建
    Horse
    实例。

    您的
    Horse
    类是
    Animal
    类的内部类,这意味着它需要一个封闭的
    Animal
    实例才能被实例化

    这毫无意义。只需将
    类移出
    动物
    类即可

    public class Animal 
    {  
        public void sound()
        {
            System.out.println("sounds");
        }
    }
    
    public class Horse extends Animal
    {
        public void run() 
        {
            System.out.println("neigh");
        }
    }
    

    main
    方法放在何处取决于您,但是基本
    Animal
    类了解其
    Horse
    子类的意义不大,因此我不会在
    Animal
    类的代码中创建
    Horse
    实例。

    第三个选项:创建
    Animal
    的实例:
    new Animal().new Horse()
    可以工作(我相信),但似乎不太可能有用。第三个选项:创建
    动物的实例:
    新动物()。new Horse()
    可以工作(我相信),但似乎不太可能有用。