对于我的作业,我应该“为您的父类和子类编写代码,并编写一个驱动程序类来演示应用程序的方法和变量。在您的驱动程序中,包括一个数组存储所有子类的对象。使用循环打印每个对象的相关值和/或使用其方法。”
嗯,这就是我到目前为止所做的:
狗(抽象类):
package objectsofaffection;
public abstract class Dog extends Test {
static String name;
static String age;
static String coatColor;
public abstract void name();
public abstract void age();
public abstract void coatColor();
}
狗贝蒂:
package objectsofaffection;
public class DogBetty extends Dog {
public DogBetty() {
name();
age();
coatColor();
}
@Override
public void name() {
System.out.println("Dog Name: Betty");
}
@Override
public void age() {
System.out.println("Age: 11 years");
}
@Override
public void coatColor() {
System.out.println("Coat Color: Brown");
}
}
狗卡尔:
package objectsofaffection;
public class DogCarl extends Dog {
public DogCarl() {
name();
age();
coatColor();
}
@Override
public void name() {
System.out.println("Dog Name: Carl");
}
public void age() {
System.out.println("Age: 2 months");
}
public void coatColor() {
System.out.println("Coat Color: Black");
}
}
狗乔:
package objectsofaffection;
public class DogJoe extends Dog {
public DogJoe() {
name();
age();
coatColor();
}
@Override
public void name() {
System.out.println("Dog Name: Joe");
}
public void age() {
System.out.println("Age: 6 years");
}
public void coatColor() {
System.out.println("Coat Color: Spotted Black and White");
}
}
狗莫莉:
package objectsofaffection;
public class DogMollie extends Dog {
public DogMollie() {
name();
age();
coatColor();
}
@Override
public void name() {
System.out.println("Dog Name: Mollie");
}
public void age() {
System.out.println("Age: 3 years");
}
public void coatColor() {
System.out.println("Coat Color: Black, Brown, White mix.");
}
}
测试(驱动程序类):
package objectsofaffection;
public class Test {
@SuppressWarnings("unused")
public static void main(String[] args) {
DogBetty betty = new DogBetty();
System.out.println(); //space
DogJoe joe = new DogJoe();
System.out.println(); //space
DogCarl carl = new DogCarl();
System.out.println(); //space
DogMollie mollie = new DogMollie();
System.out.println(); //space
}
}
那么,我怎么可能使用数组呢?请帮忙。
最佳答案
除了 Salman 接受的答案之外,我必须指出您的父类声明了 3 个静态变量。静态变量在类的所有实例之间共享,因此当设置这些变量时,狗的每个实例都将具有相同的名称、年龄和颜色。幸运的是,这些变量永远不会被设置,所以它们只是说明您对它们的目的和“静态”的使用感到困惑。另请注意,您 child 的每个类(class)都做同样的事情。这是一个提示,您应该将该逻辑移至父类中。每个子类构造函数都应该调用 super(),而父类(super class)构造函数将调用这 3 个相同的方法。
关于java - 我如何在其中使用数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48471636/