Я думаю, у вас проблемы с XY. В конечном итоге вы хотите вызвать oldGender
, но не можете, потому что oldGender
не является статичным, поэтому вы пытаетесь создать экземпляр Student
, но не удается, потому что у него нет конструктора.
Из того, что я вижу, oldGender
на самом деле не нужны никакие данные из this
, поэтому они могут быть записаны как static
метод, так же, как вы сделали с Date.after
. Просто сделай это статичным! И вы сможете назвать это как
Student.oldGender(...)
Обратите внимание, что Student
расширение Date
не имеет смысла для меня. Студент это не свидание. Я думаю, вы должны переосмыслить это.
Я добавил добавленное Date
поле в Student
, которое называется d
. Я думаю, что это, вероятно, то, что вы пытались сделать, но не сделали:
class Date {
int day;
int month;
int year;
public Date(int day, int month, int year) {
this.day=day;
this.month=month;
this.year=year;
}
public boolean equals(Date d) {
return d.day == this.day && d.month == this.month && d.year == this.year;
}
public static boolean after(Date d1, Date d2) {
return d1.day > d2.day && d1.month > d2.month && d1.year > d2.year;
}
}
class Student{
Date d;
String name;
boolean gender;
public Student(String name, boolean gender, int day, int month, int year) {
this.d = new Date(day, month, year);
this.name=name;
this.gender=gender;
}
public boolean equals(Student s) {
return s.name == this.name && s.gender == this.gender && this.d.equals(s.d);
}
public static boolean oldGender(Student[]stds) {
Student old=stds[0];
for (Student std : stds) {
if (!after(old.d, std.d)) {
old = std;
}
}
return old.gender;
}
public static void main(String[]args) {
Student s1=new Student("Jemima",true,2,3,1994);
Student s2=new Student("Theo",false,30,5,1994);
Student s3=new Student("Joanna",true,2,8,1995);
Student s4=new Student("Jonmo",false,24,8,1995);
Student s5=new Student("Qianhui",true,25,12,1994);
Student s6=new Student("Asaph",false,2,1,1995);
Student[]stds= {s1,s2,s3,s4,s5,s6};
System.out.println(oldGender(stds));
}
}