将对象数组传递给方法

所以我想使用一种方法将多个对象写入各自的文件。但是我不知道如何在不定义特定对象的情况下导入对象数组。


people is class 纯粹用于将创建的对象存储在数组中,因此可以更轻松地跨其他类访问。


例如


public class People {


    private Student[10];

    private Teacher[10];


    public void setStudentArray(Student, index) {

        Student[index] = Student;

    }


    public void setTeacherArray(Teacher, index) {

        Teacher[index] = Teacher;

    }

}


public class Student extends People {

    String name;

    int StudentID;

    public String getName() {

        return name;

    }

}


public class Teacher extends People {

    String name ;

    int Teacher ID;

    public String getName() {

        return name;

    }

}

public class Main {

    People p = new People();


    public void main (String[] args) {

        Student s = new Student("default-name" , 1);

        p.setStudentArray(s, 0);


        Teacher t = new Teacher("default-name", 1);

        p.setTeacherArray(t, 0);


        outputName(p.getStudentArray, 0);

        outputName(p.getTeacherArray, 0)

    }


    //THIS IS WHERE I AM STRUGGLING I dont know how to pass teachers or students array to it.

    //I want the Object[] parameter to accept both Student[] and Teacher[]


    public void outputName(Object[], index) {

        System.out.println(Object[index].getName);  

    }   

}

我认为我的方法采用 Object[] 是错误的,但我不知道如何处理它。我认为问题在于 Object[] 与 Teacher[] 和 Student[] 是一个完全不同的类,这就是我出错的地方。


我想在教师和学生的班级中使用 .getName 方法来打印学生教师的姓名。(只是为了让我可以看到传球正在起作用。)


如果这是不可能的,我想我不会尝试可以采用不同对象的方法。


我知道我只能使用两种方法,一种用于学生,一种用于教师,但我希望该方法适用于多个对象,以便我可以向其中添加更多对象数组。


尚方宝剑之说
浏览 163回答 3
3回答

ibeautiful

首先学习如何声明数组并选择有效的变量。在您的 People 类中进行以下修改。public class People {    //Declare arrays like this.    private Student[] student;    private Teacher[] teacher;    //Initialize arrays    public People(){        student = new Student[10];        teacher = new Teacher[10];    }    public void setStudentArray(Student s,int index) {        student[index] = s;    }    public void setTeacherArray(Teacher t, int index) {        teacher[index] = t;    }    //Add getter methods    public Student[] getStudentArray(){        return student;    }     public Teacher[] getTeacherArray(){        return teacher;    }}在子类 Student 和 Teacher 添加 Argument 构造函数最后在你的 outputName 方法中你可以做这样的事情。 public static void outputName(Object[] obj, int index) {    if(obj instanceof Student[]){        Student[] s = (Student[])obj;//parsing to student array        System.out.println("Student name : "+s[index].getName());    }    if(obj instanceof Teacher[]){        Teacher[] teacher = (Teacher[])obj;//parsing to teacher array        System.out.println("Teacher name : "+teacher[index].getName());    }}  输出:Student name : default-nameTeacher name : default-name

暮色呼如

所以Peopleclass 是由Studentand扩展的Teacher。这里有什么共同点?String name存在于Student和Teacherpublic String getName()也存在于Student和Teacher您可以将这些共性转移到People课堂上。还要确保从 Student 和 Teacher 类中删除 name 属性和 getName所以你People 更新的课程可以是:public class People {    private String name; //Newly added    private Student[10];   //This ideally shouldn't be in People class rather a different class    private Teacher[10];   //This ideally shouldn't be in People class rather a different class    public void setStudentArray(Student, index) {      Student[index] = Student;    }    public void setTeacherArray(Teacher, index) {      Teacher[index] = Teacher;    }    public String getName() {      return name;    }    public void setName() {      this.name = name;    }}outputname 方法应该是这样的:public void outputName(People[] people, index) {    System.out.println(people[index].getName());  }注意:我不是在这里更正语法,而只是提供一个想法。

HUX布斯

你必须稍微改变你的建模。即使您设法将 Student[] 作为 Object[] 传递,您也无法调用 getName 方法,因为它不是 Object 方法。因此,更好的建模方法是将 getName 方法设为 People 方法,并且 Student 和 Teacher 类都将继承它。然后你可以接收 People[] 作为 outputName 方法参数,并在里面使用 getName 方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java