public class Solution { public static void main(String[] args) { CellPhone cellPhone1 = new CellPhone("Pineapple", "piPhone Z"); CellPhone cellPhone2 = new CellPhone("Pineapple", "piPhone Z"); if (cellPhone1.equals(cellPhone2)) { System.out.println("телефоны одинаковые"); } } } class CellPhone { String vendor; String model; public CellPhone(String vendor, String model) { this.vendor = vendor; this.model = model; } @Override // вот здесь public boolean equals(Object o) { // сравниваются ссылки на два объекта, если объекты ссылаются на два объекта, то возвращает true if (this == o) { return true; } // но что здесь? Что за null? if (o == null || getClass() != o.getClass()) { return false; } // Что делают строки ниже? CellPhone cellPhone = (CellPhone) o; return Objects.equals(vendor, cellPhone.vendor) && Objects.equals(model, cellPhone.model); } @Override public int hashCode() { return Objects.hash(vendor, model); } }