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无法从静态上下文引用
@BioShockstatic
不是您的朋友,请使用前两个选项之一抱歉,我看到了您的getSpec
内容,它需要访问实例变量..因此您需要使用第一个选项a侧注不要执行super.hasWings
等,只需使用this.hasWings
。
Gliders glider = new Gliders();
glider.getSpec();
public static void getSpec()
{
}