Для этой проблемы мне была предоставлена следующая иерархия: базовый класс Person, подкласс Employee и подклассы Staff и Supervisor. Мне нужно было применить метод переопределения в классах Employee, Staff и Supervisor. и основной метод класса драйвера должен создать несколько объектов Staff и Supervisor и отобразить их имена и ежемесячную оплату.Печать различных элементов полиморфного массива в Java
Я построил полиморфный массив в классе драйвера, но я не могу понять, как построить цикл 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, но я точно не знаю, как заставить его работать здесь. В основном я хочу перечислить каждый элемент массива, за которым следует выполнение переопределенного метода, каждый в своей строке.
Вы можете использовать 'println' для нового линейного выхода. –