Для этой проблемы мне дали следующую иерархию: базовый класс 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, но я не совсем уверен, как заставить его работать здесь. В основном я хочу перечислить каждый элемент массива, за которым следует выполнение переопределенного метода, каждый в отдельной строке.
1 ответ
Вы ожидаете поведения ниже
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();
}
}
}
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
println
для вывода новой строки.