2013-10-01 2 views
0

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

+0

Вы можете использовать 'println' для нового линейного выхода. –

ответ

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

} 
+0

Очень близко; Я ищу что-то, чтобы на самом деле отображать имена/элементы списка рядом с тем, сколько они делают ... например: James Martin Supervisors составляют примерно 9800.00 в месяц. – DavesNotHere

+0

обновил ответ, я настоятельно рекомендую вам ознакомиться с основами. и принять ответ, если он вам помог – upog

+0

Duh. ЗНАЮ, что я пропустил что-то простое. Также знаю, что я все еще немного ржавый; просто вернувшись к этому после окончания года и дерьмового учителя. – DavesNotHere

Смежные вопросы