3 回答

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
首先學(xué)習(xí)如何聲明數(shù)組并選擇有效的變量。
在您的 People 類中進(jìn)行以下修改。
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 構(gòu)造函數(shù)
最后在你的 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貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
所以People
class 是由Student
and擴(kuò)展的Teacher
。
這里有什么共同點(diǎn)?
String name
存在于Student
和Teacher
public String getName()
也存在于Student
和Teacher
您可以將這些共性轉(zhuǎn)移到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 方法應(yīng)該是這樣的:
public void outputName(People[] people, index) {
System.out.println(people[index].getName());
}
注意:我不是在這里更正語法,而只是提供一個(gè)想法。

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
你必須稍微改變你的建模。即使您設(shè)法將 Student[] 作為 Object[] 傳遞,您也無法調(diào)用 getName 方法,因?yàn)樗皇?Object 方法。
因此,更好的建模方法是將 getName 方法設(shè)為 People 方法,并且 Student 和 Teacher 類都將繼承它。
然后你可以接收 People[] 作為 outputName 方法參數(shù),并在里面使用 getName 方法。
添加回答
舉報(bào)