この問題のために、基本クラスの 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ループでばかげて初歩的/単純なものが欠けていることは知っていますが、ここからそれを機能させる方法が正確にはわかりません。基本的に、配列の各要素をリストした後、オーバーライドされたメソッドをそれぞれ独自の行に実行します。