We have previously used the equals method to compare String objects. It is also possible to implement the method in own class. This enables the COMPARISON of 2 OBJECTS created out of OWN CLASS. Let's implement the method to class 'Point', which models a point in 2-dimensional coordinate system. Toteutetaan siis metodi equals luokkaan Piste, joka mallintaa pistettä kaksiulotteisessa koordinaatistossa: class Point { private int x; private int y; //CONSTRUCTOR public Point(int x, int y) { this.x = x; this.y = y; } @Override public boolean equals(Object obj) { // If same object, must be equal if (this == obj) { return true; } // Jos other is null, must be false if (obj == null) { return false; } // If other is not Point, must be false if (obj.getClass() != Point.class) { return false; } // OTHERWISE IF // 1 not the same object OR // 2 not null -> good OR // 3 not a Point class // -> Cast the input 'obj' as a Point object Point other = (Point) obj; //THEN CHECK // If x and y are equal, points are equal return (x == other.x && y == other.y); } } The implementation of the method (usually) follows the same structure. Note that it's up to the programmer to decide when two objects should be equal: do ALL ATTRIBUTES need to be EQUAL OR ONLY SOME? For example, we can decide that 2 Student objects are equal if they have 1 - the 'same student id' - as the rest of the attributes are not important 2 - (but then again, in some other case we may require that 'all attributes' have equal value for 'students' to be equal): class Student extends Person { // Name and email are inherited from Person private String studentId; private int credits; public Student(String studentId, String name, String email, int credits) { super(name, email); this.studentId = studentId; this.credits = credits; } @Override public boolean equals(Object obj) { // SAME OBJECCT if (this == obj) { return true; } // NOT NULL if (obj == null) { return false; } // not 'Student' class if (obj.getClass() != Student.class) { return false; } // SAME studentId Student other = (Student) obj; // Strings are compared with equals method return studentId.equals(other.studentId); } } A typical error is to forget to use the 'equals' method when comparing objects: for example, String objects' equality must be checked with equals method instead of == operator. Most editors provide a way to insert the equals method automatically, plese refer to your editor's documentation (or google it - for example "visual studio code java equals".