在Java中打印多态数组的不同元素
对于这个问题,我得到了以下层次结构:基类Person、子类Employee和子类Staff和Supervisor。我需要在Employee、Staff和Supervisor类中应用方法重写。driver类的主要方法需要创建员工和主管的多个对象,并显示他们的姓名和月薪 我在driver类中构建了一个多态数组,但我不知道如何构造for循环,以便在重写的方法返回值旁边显示数组的每个元素。我让基类和子类非常简单:在Java中打印多态数组的不同元素,java,arrays,overriding,Java,Arrays,Overriding,对于这个问题,我得到了以下层次结构:基类Person、子类Employee和子类Staff和Supervisor。我需要在Employee、Staff和Supervisor类中应用方法重写。driver类的主要方法需要创建员工和主管的多个对象,并显示他们的姓名和月薪 我在driver类中构建了一个多态数组,但我不知道如何构造for循环,以便在重写的方法返回值旁边显示数组的每个元素。我让基类和子类非常简单: public class Person { void Salary(){ System
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");
}
}
这是driver类,我遇到了一个问题:
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();
}
}
}
导入java.util.array;
公营班级名册{
公共静态void main(字符串[]args){
人员名册[]=新人员[6];
名册[0]=新主管(“詹姆斯·马丁”);
名册[1]=新主管(“威廉·史密斯”);
名册[2]=新主管(“詹妮弗·希普曼”);
名册[3]=新员工(“Brian Williams”);
名册[4]=新员工(“Carrie James”);
名册[5]=新员工(“萨曼莎·鲍尔斯”);
对于(int i=0;i
现在,它的输出是数组中的所有元素加上重写的方法,每个元素都在自己的行上。我知道我在for循环中遗漏了一些荒谬的基本/简单的东西,但我不确定如何从这里开始工作。基本上,我想列出数组中的每个元素,然后是重写方法的执行,每个元素都在自己的行上。您是否期望以下行为
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.util.array;
班主任{
字符串名;
作废工资(){
System.out.println(“所有职位都有薪水”);
}
公共字符串toString(){
返回名称;
}
}
类雇员扩展个人{
作废工资(){
System.out.println(“员工和主管的工资不同”);
}
公共字符串toString(){
返回名称;
}
}
班级职员延伸到员工{
公职人员(字符串名称){
this.name=名称;
}
作废工资(){
System.out.println(“正式员工每月收入3500.00”);
}
公共字符串toString(){
返回名称;
}
}
班主任延伸员工{
公共主管(字符串名称){
this.name=名称;
}
作废工资(){
System.out.println(“主管每月收入约9800.00”);
}
公共字符串toString(){
返回名称;
}
}
公营班级名册{
公共静态void main(字符串[]args){
人员名册[]=新人员[6];
名册[0]=新主管(“詹姆斯·马丁”);
名册[1]=新主管(“威廉·史密斯”);
名册[2]=新主管(“詹妮弗·希普曼”);
名册[3]=新员工(“Brian Williams”);
名册[4]=新员工(“Carrie James”);
名册[5]=新员工(“萨曼莎·鲍尔斯”);
对于(int i=0;i
您可能希望使用println
进行新行输出。非常接近;我在寻找一些东西,在他们挣多少钱的旁边,实际显示名册上的名字/元素。。。詹姆斯·马丁主管的月薪约为9800.00美元。更新了答案,我强烈建议你学习基础知识。如果答案对你有帮助,就接受它。我知道我错过了一些简单的事情。也知道我还是有点生疏;在一年的休息和一个差劲的老师之后,我又回到了这里。