我有抽象类 Animal 和继承类 Fish 和 Dog。 我需要创建各种鱼和狗的物体,并给它们命名和品种,并制定它们移动方式的方法。 最后,我需要创建一个它们的数组,并进行 4 次随机打印,以显示它们的名称和品种。
主类:
public class JavaApplication38 {
public static void main(String[] args) {
Animal[] arr = new Animal[20];
arr[0] = new Fish("Riby", "Sea Fish");
arr[1] = new Dog("Any", "Great Dane");
arr[2] = new Fish("Ribytsa", "River fish");
arr[3] = new Dog("Jackie", "Pug");
arr[4] = new Fish("Bobi", "Mix");
arr[5] = new Dog("Ruby", "Labrador");
}
}
动物类
public abstract class Animal {
public Animal(String name, String breed){
}
public Animal(){
}
public abstract void moving();
}
狗类
Public class Dog extends Animal{
private String breed;
private String name;
public Dog(){
}
public Pas(String name, String breed){
this.name = name;
this.breed =breed;
}
@Override
public void moving() {
System.out.print("Walk\n");
}
}
鱼类
public class Fish extends Animal {
private String breed;
private String name;
public Fish(){
}
public Fish(String name, String breed){
this.name = name;
this.breed= breed;
}
@Override
public void moving(){
System.out.print("Swims\n");
}
}
问题是,我必须在循环中编写什么才能通过数组打印名称和品种?
最佳答案
问题在于您在 Animal
的每个子类中分别定义了 name
和 breed
。您需要在 Animal
中创建 name
和 breed
实例变量。这样,Java 就知道每个动物都有一个名称
和品种
。
public abstract class Animal {
private String name;
private String breed;
public Animal(String name, String breed) {
this.name = name;
this.breed = breed;
}
public getName() { return name; }
public getBreed() { return breed; }
public abstract void moving();
}
public class Dog extends Animal {
public Dog(String name, String breed) {
super(name, breed);
}
@Override
public void moving(){
System.out.print("Walks\n");
}
}
public class Fish extends Animal {
public Fish(String name, String breed) {
super(name, breed);
}
@Override
public void moving(){
System.out.print("Swims\n");
}
}
现在您可以打印任何动物
的名称
和品种
,无论是狗
还是 >鱼
。
Animal[] arr = new Animal[6];
arr[0] = new Fish("Riby", "Sea Fish");
arr[1] = new Dog("Any", "Great Dane");
arr[2] = new Fish("Ribytsa", "River fish");
arr[3] = new Dog("Jackie", "Pug");
arr[4] = new Fish("Bobi", "Mix");
arr[5] = new Dog("Ruby", "Labrador");
for (Animal a : arr) {
System.out.println(a.getName() + " " + a.getBreed());
a.moving();
}
关于java - 如何创建继承对象的数组 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53548100/