2013-10-01 3 views
0

이 문제의 경우 기본 클래스 Person, 하위 클래스 Employee 및 하위 클래스 Staff 및 Supervisor가 제공됩니다. Employee, Staff 및 Supervisor 클래스에서 메소드 재정의를 적용해야했습니다. 드라이버 클래스의 주된 메소드는 Staff와 Supervisor의 여러 오브젝트를 생성하고 이름과 월간 보수를 표시해야합니다.Java의 다형성 배열의 다른 요소 인쇄

드라이버 클래스에 다형성 배열을 만들었지 만 재정의 메서드 반환 값 옆에 배열의 각 요소를 표시하는 for 루프를 구성하는 방법을 알 수 없습니다. 지금

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

} 

, 출력이의 모든 요소가 있습니다 : 여기

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

내가 문제에 봉착 경우, 드라이버 클래스 : 나는 상당히 간단베이스와 서브 클래스를 유지 배열과 오버라이드 된 메소드를 각각의 행에 추가합니다. 나는 for 루프에서 무언가 어리석은 초등/단순 무언가를 놓치고 있다는 것을 압니다.하지만 여기서 어떻게 작동하게하는지 정확하게 모르겠습니다. 기본적으로 배열의 각 요소를 나열한 다음 재정의 된 메서드를 실행하고 각각은 자체 줄에 나열하려고합니다.

+0

이하로 예상하고있다. –

답변

0

당신은 행동

당신은 새로운 라인 출력을위한`println`을 사용할 수 있습니다
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 감독관은 월간 약 9800.00을 만듭니다. – DavesNotHere

+0

가 답변을 업데이트했으며, 기본을 수행 할 것을 강력히 권장합니다. 그것이 당신을 도운다면 대답을 받아 들일 것입니다. – upog

+0

Duh. 뭔가 간단한 것을 놓치고있었습니다. 또한 나는 아직도 약간 녹슬지 알고있다. 1 년 동안의 휴식과 진절머리 나는 선생님을 만난 후에 이것으로 다시 돌아 왔습니다. – DavesNotHere