Java:使用继承构建动物园的问题



我是Java新手,继承方面有问题。我正在处理一个活动,其中我有一个父类(Animal(和子类(本例中为Giraffe(,它们继承了父类的字段。我被要求有一个默认构造函数和一个在父类和子类的实例中都接受参数的构造函数。

我遇到的问题是,当我运行printInfo((时,它在父类的默认构造函数("species"(中返回默认的species,而不是子类("iraffe"(。我曾假设Giraffe子类会继承这个父类方法,但这里似乎有些地方不太对劲。

(注意,我的每个类都是单独的文件(

如有任何协助或指示,我们将不胜感激。

// Parent class:
public class Animal {
String name;
String species;
int age;
// default constructor
public Animal() {
name = "name";
species = "species";
age = 0;
}

// constructor w/ parameters
public Animal(String name, String species, int age){
this.name = name;
this.species = species;
this.age = age;
}

// method for printing out animal info
void printInfo() {
System.out.println(name + ", " + species + ", " + age);
}

} 
// Child class:
public class Giraffe extends Animal {
String species = "giraffe";

// default giraffe constructor
public Giraffe() {
super();
name  = "Errol";
age = 0;
}
// giraffe constructor with parameters
public Giraffe(String name, int age) {
super();
this.name = name;
this.age = age;
}

}
// Main class (calls printInfo method from Animal parent class)
public class ZooBuilder {

public static void main(String[] args) {

Giraffe one = new Giraffe("Mark", 23);
one.printInfo();
}
}

Prints: *Mark, species, 23*

更改Giraffe构造函数以调用完整构造函数

public Giraffe(String name, int age) {
super(name, "Giraffe", age);
}

将默认值更改为与上述相同

最新更新