Loading...

Object Классы жана анын методдору

 

Биз мурас кылбаган кадимки классты түзө алсак да, чындыгында бардык класстар Object классынан мурастайт. Бардык башка класстар, атүгүл биз долбоорго кошкон класстар да Object классынан кыйыр түрдө алынган. Демек, бардык типтер жана класстар Object классында аныкталган методдорду ишке ашыра алышат. Келгиле, бул ыкмаларды карап көрөлү.

 

toString

toString ыкмасы берилген объекттин сап көрсөтүүсүн алуу үчүн колдонулат. Кандайдыр бир объекттин саптуу көрүнүшүн басып чыгарууга аракет кылганыңызда, эреже катары, класстын толук аты көрсөтүлөт. Мисалы:

public class Program{

     

    public static void main(String[] args) {

            

        Person tom = new Person("Tom");

        System.out.println(tom.toString()); // Будет выводить что-то наподобие Person@7960847b

    }

}

class Person {

    

    private String name;

    

    public Person(String name){

    

        this.name=name;

    }

}

Мен алган маани (бул учурда, Person@7960847b) объекттин жакшы сап сүрөттөмөсү эмес. Ошондуктан, toString() ыкмасы көбүнчө жокко чыгарылат. Мисалы:

public class Program{

     

    public static void main(String[] args) {

            

        Person tom = new Person("Tom");

        System.out.println(tom.toString()); // Person Tom

    }

}

class Person {

    

    private String name;

   

    public Person(String name){

    

        this.name=name;

    }

    

    @Override

    public String toString(){

         

        return "Person " + name;

    }

}

hashcode ыкмасы

hashCode ыкмасы берилген объектке же анын хэш кодуна туура келе турган кээ бир сандык маанилерди коюуга мүмкүндүк берет. Бул сан боюнча, мисалы, объекттерди салыштырууга болот.

 

Мисалы, жогоруда аныкталган объектинин көрүнүшүн чыгаралы:

 

Person tom = new Person("Tom");

System.out.println(tom.hashCode()); // 2036368507

 

Бирок биз объекттин хэш кодун аныктоо үчүн өзүбүздүн алгоритмибизди орното алабыз:

class Person {

    

    private String name;

   

    public Person(String name){

    

        this.name=name;

    }

    

    @Override

    public int hashCode(){

 

        return 10 * name.hashCode() + 20456;

    }

}

Объекттин түрүн жана getClass ыкмасын алуу

getClass ыкмасы берилген объекттин түрүн алууга мүмкүндүк берет:

Person tom = new Person("Tom");

System.out.println(tom.getClass()); // class Person

 

Equals() ыкмасы

equals ыкмасы теңдик үчүн эки объектти салыштырат:

public class Program{

     

    public static void main(String[] args) {

            

        Person tom = new Person("Tom");

        Person bob = new Person("Bob");

        System.out.println(tom.equals(bob)); // false

        

        Person tom2 = new Person("Tom");

        System.out.println(tom.equals(tom2)); // true

    }

}

class Person {

    

    private String name;

    

    public Person(String name){

    

        this.name=name;

    }

    

    @Override

    public boolean equals(Object obj){

        

        if (!(obj instanceof Person)) return false;

 

        Person p = (Person)obj;

        return this.name.equals(p.name);

    }

}

барабар ыкмасы параметр катары каалаган түрдөгү объектти алат, биз андан кийин алар бир класстын объектилери болсо, аны учурдагыга чыгарабыз.

 

instanceof оператору параметр катары берилген объекттин белгилүү бир класстын объектиси экендигин аныктоого мүмкүндүк берет, бул учурда Person классы. Эгерде объекттер ар кандай класстарга таандык болсо, анда алардын салыштыруу мааниси жок жана жалган кайтарылып берилет.

 

Анан аты менен салыштырабыз. Эгерде алар дал келсе, биз объекттер бирдей деп айта турган чындыкты кайтарабыз.