我怎么能在这里使用数组?

时间:2018-01-27 01:11:24

标签: java arrays

对于我的任务,我应该,"编写父类和子类的代码,并编写一个驱动程序类来演示应用程序的方法和变量。在您的驱动程序中,包含一个数组来存储所有子类的对象。使用循环打印出每个对象的相关值和/或使用其方法。"

嗯,这是我到目前为止所做的:

狗(抽象类):

    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();
}

DogBetty:

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");

        }
    }

DogCarl:

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");

        }
    }

DogJoe:

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");

        }
    }

DogMollie:

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

    } 
} 

那么,我怎么可能使用数组呢?请帮助。

2 个答案:

答案 0 :(得分:2)

除了萨尔曼接受的答案之外,我必须指出你的父类声明了3个静态变量。静态变量在类的所有实例之间共享,因此在设置这些实例时,每个dog实例都将具有相同的名称,年龄,颜色。幸运的是,这些变量从未设置过,所以它们只是说明你对它们的目的和“静态”的使用感到困惑。另外,请注意您的孩子班级的每个人都做同样的事情。这是一个提示,您应该将该逻辑移动到父类中。每个子类构造函数都应调用super(),超类构造函数将调用相同的3个方法。

答案 1 :(得分:1)

首先,您没有为每只狗制作子类,抽象类表示类型,子类表示子类型。因此,如果Dog是父类,那么您的子类可以是品种,也可以是您制作对象的每只狗。

Dog - > germanShepard extends Dog - > germanShepard dogMollie = new germanShepard();

然后你可以使用germanShepard类型的ArrayList:ArrayList<germanShepard> dogs = new ArrayList<germanShepard>();

dogs.add(dogMollie); ArrayList是动态数据结构,因此它会根据您的需要增长

但是如果你想使用数组,

germanShepard[] dogs;

dogs =new germanShepard[10];

dogs[0] = new germanShepard(name,age,coatColor);