Sobes.tech
Junior — Middle

შეგვიძლია მეთოდი equals გამოიყენოთ მისი წინასწარი გადაწერების გარეშე კლასში?

sobes.tech AI

პასუხი AI-სგან

დიახ, მეთოდი equals შეიძლება გამოყენებულ იქნას მისი გადაწერილობის გარეშე, რადგან ის მემკვიდრეობითია კლასიდან Object. თუმცა, ამ შემთხვევაში, მეთოდის ქცევა სტანდარტული იქნება: ობიექტების მითითებების შედარება (ანუ, შემოწმება, ორი ცვლადი ერთსა და იმავე ობიექტს მიუთითებს მეხსიერებაში).

თუ საჭიროა ობიექტების შედარება მათი შიგთავსის მიხედვით (მაგალითად, ველების მნიშვნელობების მიხედვით), მაშინ equals მეთოდი უნდა გადაწერილიყო კლასში. გადაწერილის გარეშე, შედარება არ იმუშავებს როგორც მოსალოდნელი ლოგიკურად თანაბარი ობიექტებისთვის.

მაგალითი:

class Person {
    String name;
    Person(String name) { this.name = name; }
}

Person p1 = new Person("Alice");
Person p2 = new Person("Alice");

System.out.println(p1.equals(p2)); // false, თუ `equals` არ არის გადაწერილი

შიგთავსის მიხედვით შედარების მუშაობისთვის, საჭიროა equals და hashCode მეთოდების გადაწერა.