Для этой проблемы мне дали следующую иерархию: базовый класс 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, но я не совсем уверен, как заставить его работать здесь. В основном я хочу перечислить каждый элемент массива, за которым следует выполнение переопределенного метода, каждый в отдельной строке.

0
DavesNotHere 1 Окт 2013 в 08:27
Возможно, вы захотите использовать println для вывода новой строки.
 – 
Anjan Baradwaj
1 Окт 2013 в 08:45

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

}
0
upog 1 Окт 2013 в 11:00
Очень близко; Я ищу что-нибудь, чтобы на самом деле отображать имена / элементы списка рядом с тем, сколько они зарабатывают ... например: Джеймс Мартин Супервизоры зарабатывают примерно 9800,00 в месяц.
 – 
DavesNotHere
1 Окт 2013 в 10:53
Обновил ответ, настоятельно рекомендую изучить основы. и примите ответ, если он вам помог
 – 
upog
1 Окт 2013 в 11:02
Ага. ЗНАЛ, что мне не хватало чего-то простого. Также знай, что я все еще немного заржавел; просто возвращаюсь к этому после годичного перерыва и дерьмового учителя.
 – 
DavesNotHere
1 Окт 2013 в 11:12