Sobes.tech
Junior

Шумо дар бораи синфи Object чӣ медонед?

sobes.tech AI

Ҷавоб аз AI

java.lang.Object дар омили решаи асосии дар ҳиёрархияи синфҳои Java мебошад. Ҳар як синф ба таври ғайрирасмӣ аз Object мерос мегирад.

Методҳои асосӣ:

  • equals(Object obj): Объекти ҳозираро бо дигар объект барои баробарӣ муқоиса мекунад. Ба таври пешфарз муқоиса мекунад бо ишораҳо.
  • hashCode(): Кодекоди хеши объектро бармегардонад. Дар коллексияҳое, ки асос ёфтаанд ба таблицҳои хеш (масалан, HashMap, HashSet) истифода мешавад. Агар ду объект баробар бошанд дар equals(), бояд hashCode() онҳо ҳамон қадар бошанд.
  • toString(): Намояндаии стрингии объектро бармегардонад. Ба таври пешфарз номи синф + @ + кодекоди хеш дар формати ҳексадецималӣ бармегардонад. Бештар барои пешниҳоди намояндаи бештар маълумот дода мешавад.
  • getClass(): Объекти Class-ро, ки синфи объектро дар вақти иҷро нишон медиҳад, бармегардонад.
  • notify(): иҷрои як ҷараёнро, ки дар интизор аст, дар мониторини ин объект такмил медиҳад.
  • notifyAll(): иҷрои ҳамаи ҷараёнҳоро, ки дар интизор ҳастанд, дар мониторини ин объект такмил медиҳад.
  • wait() / wait(long timeout) / wait(long timeout, int nanos): ҷараёни ҳозираро маҷбур мекунад, ки интизор шавад, то дигар ҷараёнҳо notify() ё notifyAll()-ро барои ин объект даъват кунанд ё вақте ки вақти муайяншуда ба охир мерасад. Ин метод танҳо аз блокҳо ё методҳои синхронизатсияшуда даъват мешавад.
  • clone(): нусхаи ин объектро месозад ва бармегардонад. Имплементацияи интерфейси Cloneable-ро талаб мекунад.
  • finalize(): пеш аз нест кардани объект аз ҷониби ҷамъкунандаи партовҳо даъват мешавад. Барои истифода тавсия намедиҳад, зеро иҷрои он ғайриинтизор аст.

Масалан, ки чӣ гуна equals() ва hashCode()-ро дар синф навишт:

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age &&
               Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

    @Override
    public String toString() {
        return "Person{" +
               "name='" + name + '\'' +
               ", age=" + age +
               '}';
    }
}

Класа Object таъмин мекунад асосҳои механизмҳо, ки барои кор бо объектҳо дар Java заруранд, аз ҷумла муқоиса, хешакорӣ, синхронизатсия ва гирифтани маълумот дар бораи синф.