3 回答
TA贡献1993条经验 获得超5个赞
首先学习如何声明数组并选择有效的变量。
在您的 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-name
Teacher name : default-name
TA贡献1853条经验 获得超9个赞
所以People
class 是由Student
and扩展的Teacher
。
这里有什么共同点?
String name
存在于Student
和Teacher
public 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());
}
注意:我不是在这里更正语法,而只是提供一个想法。
TA贡献1876条经验 获得超6个赞
你必须稍微改变你的建模。即使您设法将 Student[] 作为 Object[] 传递,您也无法调用 getName 方法,因为它不是 Object 方法。
因此,更好的建模方法是将 getName 方法设为 People 方法,并且 Student 和 Teacher 类都将继承它。
然后你可以接收 People[] 作为 outputName 方法参数,并在里面使用 getName 方法。
添加回答
举报