Java 如何修复错误:非静态变量不能从Horse d=new Horse()附近的静态上下文引用该变量;
我得到一个错误,非静态变量this不能从静态上下文引用: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
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()
可以工作(我相信),但似乎不太可能有用。