/* A simplified version of an example given in Absolute Java Chp08 */ class SubjectResult { private String name; // e.g. "Chemistry", "Geography" private char grade; // e.g. 'A', 'B', 'C' SubjectResult(String n, char g) {name=n; grade=g;} @Override public boolean equals(Object otherObject) { if (otherObject == null) return false; if (this.getClass() != otherObject.getClass()) return false; SubjectResult otherSR = (SubjectResult) otherObject; if (!this.name.equals(otherSR.name)) return false; if (this.grade != otherSR.grade) return false; return true; } } class Main { public static void main(String[] args) { SubjectResult s1 = new SubjectResult("Chemistry", 'A'); SubjectResult s2 = new SubjectResult("Physics", 'A'); SubjectResult s3 = new SubjectResult("Chemistry", 'B'); SubjectResult s4 = new SubjectResult("Physics", 'B'); SubjectResult s5 = new SubjectResult("Chemistry", 'A'); System.out.println(s1.equals(null)); // false System.out.println(s1.equals(s2));// false System.out.println(s1.equals(s3));// false System.out.println(s1.equals(s4));// false System.out.println(s1.equals(s5));// true } } /* class SubjectResult { private String name; //e.g. "Chemistry", "Geography" private char grade; //e.g. 'A', 'B', 'C' SubjectResult(String n, char g) {name=n; grade=g;} public boolean equal(Object otherObject) { SubjectResult otherSR = (SubjectResult) otherObject; return this.name.equals(otherSR.name) && this.grade==otherSR.grade; } } class Main { public static void main(String[] args) { SubjectResult s1 = new SubjectResult("Chemistry",'A'); SubjectResult s2 = new SubjectResult("Physics",'A'); SubjectResult s3 = new SubjectResult("Physics",'A'); System.out.println(s1.equals(s2)); //false? System.out.println(s2.equals(s3)); //true? } } */