Student Class structure
public class Student
private String name;
private int age;
private int grade;
public Student(String n, int a, int g) {
name = n;
age = a;
grade = g;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int getGrade() {
return grade;
}
public void setName(String n) {
name = n;
}
public void setAge(int a) {
age = a;
}
public void setGrade(int g) {
grade = g;
}
public int compareTo(Student other) {
return grade - other.grade;
}
public boolean equals(Object obj) {
return grade == other.grade;
}
public Student clone() {
return new Student(name, age, grade);
}
In StudentTester class, we will test the Student class
public class StudentTester {
public static void main(String[] args) {
Student s1 = new Student("Alice", 16, 92);
Student s2 = new Student("Bob", 17, 85);
Student s3 = new Student("Charlie", 16, 80);
// test getters
System.out.println("Name: " + s1.getName());
System.out.println("Age: " + s1.getAge());
System.out.println("Grade: " + s1.getGrade());
// test setters
s2.setGrade(92);
System.out.println("Bob\'s new grade: " + s2.getGrade()); // Bob's new grade: 92
// test equals (compares grade only)
System.out.println("s1 equals s3: " + s1.equals(s3)); // false
System.out.println("s1 equals s2: " + s1.equals(s2)); // true
// test compareTo (by grade)
System.out.println("s1 compareTo s3: " + s1.compareTo(s3)); // positive
System.out.println("s1 compareTo s2: " + s1.compareTo(s2)); // 0
// test clone
Student s4 = s1.clone();
System.out.println("s4 equals s1: " + s4.equals(s1)); // true
System.out.println("Same object? " + (s4 == s1)); // false
}
}