无法对非静态java进行静态引用
我正在努力学习java。如果我的概念不清楚或非常错误,请原谅我。 我正在尝试创建继承和多态应用程序 我已经创建了一系列动物[5]。我试图在数组中添加狗、猫的引用。 我想让它保持住 动物[0]=动物园狗 我得到一个错误 无法对非静态对象进行静态引用 我创建了AnimalstestDrivve类无法对非静态java进行静态引用,java,arrays,Java,Arrays,我正在努力学习java。如果我的概念不清楚或非常错误,请原谅我。 我正在尝试创建继承和多态应用程序 我已经创建了一系列动物[5]。我试图在数组中添加狗、猫的引用。 我想让它保持住 动物[0]=动物园狗 我得到一个错误 无法对非静态对象进行静态引用 我创建了AnimalstestDrivve类 package animals; public class AnimalstestDrive { public Animals[] myZoo = new Animals[5]; int
package animals;
public class AnimalstestDrive {
public Animals[] myZoo = new Animals[5];
int zooCounter = 0;
public static void main(String[] args) {
//Set animals array
Dog zooDog = new Dog();
addAnimals(zooDog);
Cat zooCat = new Cat();
addAnimals(zooCat);
}
public void addAnimals(Animals a){
if ( zooCounter > 5 ){
myZoo[zooCounter] = a;
zooCounter++;
}
else
System.out.println("Zoo is full");
}
}
这是我的动物课
package animals;
public abstract class Animals {
private String Name;
private int Size; //Size on the scale 1 to 10
public void eatFood(){
System.out.println("I am eating food");
}
public void sleep(){
System.out.println("I am sleeping now");
}
abstract public void makeNoises();
}
简单的狗,猫类
package animals;
public class Dog extends Animals {
public void makeNoises(){
System.out.println("Bow! bow!");
}
}
main方法(static)尝试调用addAnimals
方法,该方法的声明是非静态的。您需要首先创建该类的实例,然后在此实例上调用该方法
AnimalstestDrive testDrive = new AnimalstestDrive();
Dog zooDog = new Dog();
testDrive.addAnimals(zooDog);
有关更多信息,请参见您需要一个类AnimalstestDrive的实例。静态意味着您不需要任何类的实例来使用class方法,因此如果您将addAnimals标记为静态,则可以使用该方法而不创建AnimalstestDrive的实例。因为方法
addAnimals
不是静态的,您需要创建animaltestdrive
的实例才能使用该函数。
当一个方法不是静态的时,它特定于该类的一个实例。例如:
AnimalstestDrive atd = new AnimalstestDrive();
atd.addAnimals(new Dog()); // this will add animals to "atd"
如果一个方法是静态的,它不是特定于类的实例,而是类本身
如果将此方法放入类animaltestdrive
:
public static void staticMethod() {
}
您只能使用animaltestdrive.staticMethod()
访问它,而不能使用atd.staticMethod()
更多关于静态方法的信息。如果一个类只有一种动物,那么给它命名
动物是个坏主意。应该是Animal[]animals
。提问前请先回答。对于这个确切的问题,有足够的现有答案。可能重复