0

この問題のために、基本クラスの Person、サブクラスの Employee、およびサブクラスの Staff と Supervisor という階層が与えられました。クラス Employee、Staff、Supervisor でメソッドのオーバーライドを適用する必要がありました。また、ドライバー クラスのメイン メソッドでは、Staff と Supervisor のオブジェクトをいくつか作成し、名前と月給を表示する必要があります。

ドライバー クラスで多態的な配列を作成しましたが、オーバーライドされたメソッドの戻り値の隣に配列の各要素を表示する for ループを作成する方法がわかりません。基本クラスとサブクラスを非常にシンプルに保ちました。

public class Person {


void Salary(){
System.out.println("All positions are salaried");

}
}
public class Employee extends Person {

void Salary(){
    System.out.println("Salaries vary between staff and supervisors");
}

}
public class Staff extends Employee {

public Staff(String string) {

}

void Salary() {
    System.out.println("A regular staff employee makes 3500.00 monthly");
}


}
public class Supervisor extends Employee {


public Supervisor(String string) {
}

void Salary(){
    System.out.println("Supervisors make approximately 9800.00 monthly");
}
}

これが私が問題を抱えているドライバークラスです:

import java.util.Arrays;

public class HRRoster {


public static void main(String[] args) {


    Person roster[] = new Person[6];  
    roster[0] = new Supervisor("James Martin");
    roster[1] = new Supervisor("William Smith");
    roster[2] = new Supervisor("Jennifer Shipman");
    roster[3] = new Staff("Brian Williams");
    roster[4] = new Staff("Carrie James");
    roster[5] = new Staff("Samantha Powers");



            for (int i=0; i < roster.length; i++){
                System.out.print(Arrays.toString(roster));
                roster[i].Salary();
            }
    }

}

現在、その出力は、配列内のすべての要素とオーバーライドされたメソッドであり、それぞれが独自の行にあります。forループでばかげて初歩的/単純なものが欠けていることは知っていますが、ここからそれを機能させる方法が正確にはわかりません。基本的に、配列の各要素をリストした後、オーバーライドされたメソッドをそれぞれ独自の行に実行します。

4

1 に答える 1

0

以下の動作を期待していますか

 import java.util.Arrays;

class Person {
    String name;
    void Salary() {
        System.out.println("All positions are salaried");

    }
    public String toString(){
        return name;
    }
}

class Employee extends Person {

    void Salary() {
        System.out.println("Salaries vary between staff and supervisors");
    }
    public String toString(){
        return name;
    }

}

class Staff extends Employee {

    public Staff(String name) {
        this.name = name;
    }

    void Salary() {
        System.out.println("A regular staff employee makes 3500.00 monthly");
    }
    public String toString(){
        return name;
    }


}

class Supervisor extends Employee {

    public Supervisor(String name) {
        this.name = name;
    }

    void Salary() {
        System.out.println("Supervisors make approximately 9800.00 monthly");
    }
    public String toString(){
        return name;
    }
}

public class HRRoster {

    public static void main(String[] args) {

        Person roster[] = new Person[6];
        roster[0] = new Supervisor("James Martin");
        roster[1] = new Supervisor("William Smith");
        roster[2] = new Supervisor("Jennifer Shipman");
        roster[3] = new Staff("Brian Williams");
        roster[4] = new Staff("Carrie James");
        roster[5] = new Staff("Samantha Powers");

        for (int i = 0; i < roster.length; i++) {
            System.out.print(roster[i].toString() + "\t");
            roster[i].Salary();
        }
    }

}
于 2013-10-01T04:42:46.143 に答える