Java 使用超类从stati上下文引用的非静态方法

Java 使用超类从stati上下文引用的非静态方法,java,inheritance,static-methods,Java,Inheritance,Static Methods,我创造了一个超类飞机和一个子类滑翔机 public class Airplanes { public String hasWings; public int numberWheels; public int numberPassengers; public Airplanes(String hasWings, int numberWheels, int numberPassengers) { // initialise instance variables th

我创造了一个超类飞机和一个子类滑翔机

public class Airplanes
{
public String hasWings;
public int numberWheels;
public int numberPassengers;

    public Airplanes(String hasWings, int numberWheels, int numberPassengers)
    {
    // initialise instance variables
    this.hasWings=hasWings;
    this.numberWheels=numberWheels;
    this.numberPassengers=numberPassengers;
    }
}

一个新的类测试必须初始化滑翔机,其编写方式如下:

public class Test
{
   public Test()
   {
    Airplanes alfa = new Gliders("Yes",2,2,"Np");
    Gliders.getSpec();
   }
}
当我尝试运行Gliders.getSpec()时,它会打印一个错误,表示我试图从静态上下文引用非静态方法


我只是想知道我试图做的是合法的还是非法的,如果是,我如何修复它?

您的
getSpec
方法是非静态方法(实例方法)。因此,您需要首先创建一个
Gliders
的实例

new Gliders().getSpec();

如果您仍然希望像那样调用
getSpec
,则需要将
getSpec
更改为static方法

public static void getSpec()
{
}

使用最后一个选项,我得到以下错误:
非静态变量super无法从静态上下文引用
@BioShock
static
不是您的朋友,请使用前两个选项之一抱歉,我看到了您的
getSpec
内容,它需要访问实例变量..因此您需要使用第一个选项a侧注不要执行
super.hasWings
等,只需使用
this.hasWings
Gliders glider = new Gliders();
glider.getSpec();
public static void getSpec()
{
}