Object Class

Object

๋ชจ๋“  ํด๋ž˜์Šค์˜ ๋ถ€๋ชจ ํด๋ž˜์Šค. ์ฆ‰, ์ตœ๊ณ  ์กฐ์ƒ ํด๋ž˜์Šค

์–ด๋– ํ•œ ํ•„๋“œ ๊ฐ’๋„ ๊ฐ€์ง€์ง€ ์•Š์œผ๋ฉฐ, ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ–‰๋™๋“ค์„ ์ •์˜ํ•œ ๋ฉ”์†Œ๋“œ๋“ค๋งŒ์„ ๊ฐ–๋Š”๋‹ค.

Object์˜ ์ฃผ์š” ๋ฉ”์†Œ๋“œ

Equals

  • ๊ฐ์ฒด ์ž์‹ (this)๊ณผ ์ฃผ์–ด์ง„ ๊ฐ์ฒด(obj)๋ฅผ ๋น„๊ตํ•ด์„œ ๊ฐ™์œผ๋ฉด true, ๋‹ค๋ฅด๋ฉด false ๋ฐ˜ํ™˜

  • Object ํด๋ž˜์Šค์— ํฌํ•จ๋˜๋ฉฐ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ๋น„๊ต

hashCode

  • ๊ฐ์ฒด์˜ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ

  • Object ํด๋ž˜์Šค์— ํฌํ•จ๋˜๋ฉฐ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ int๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋ฐ˜ํ™˜

  • equals๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜๋ฉด hashCode๋„ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์•ผ ํ•จ

    • โญ equals์˜ ๊ฒฐ๊ณผ๊ฐ€ true์ธ ๋‘ ๊ฐ์ฒด์˜ ํ•ด์‹œ์ฝ”๋“œ๋Š” ๊ฐ™์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ

  • ๋งŒ์•ฝ ํŠน์ • ํด๋ž˜์Šค์—์„œ ์ธ์Šคํ„ด์Šค๋“ค์ด ํ•„๋“œ๊ฐ’์ด ์ผ์น˜ํ•œ ๊ฒฝ์šฐ ๋™์ผํ•œ ๊ฐ์ฒด๋กœ ๊ฐ„์ฃผํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด equals์™€ hashCode ๋ฉ”์†Œ๋“œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜๋ฉด ๋œ๋‹ค.

    class Product {
        String name;
        int price;
    
        @Overriding
        // ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด๊ธฐ ๋•Œ๋ฌธ์— parameter type์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€
        public boolean equals(Object obj) {
            // ๋ณ„๋„๋กœ ํƒ€์ž… ์ฒดํฌ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•ด์•ผ ํ•จ
            if (!(obj instanceof Product))
                return false;
    
            Product other = (Product) obj;
            return this.name.equals(obj.name) && this.price == obj.price;
        }
    
        @Overriding
        // equals๊ฐ€ ๋™์ผ ํ•„๋“œ์—์„œ true์ด๋ฏ€๋กœ
        // hashCode๋„ ํ•„๋“œ๊ฐ€ ๊ฐ™์œผ๋ฉด ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋„๋ก ์˜ค๋ฒ„๋ผ์ด๋”ฉ
        public int hashCode() {
            return Objects.hash(name, price);
        }
    }

toString

  • ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜

  • ํด๋ž˜์Šค๋ช…@16์ง„์ˆ˜์ฃผ์†Œ๊ฐ’ ์œผ๋กœ ์ด๋ฃจ์–ด์ง (Object์˜ toString)

  • stdout์œผ๋กœ ์ถœ๋ ฅ ์‹œ ํ˜ธ์ถœ๋จ

getClass

  • ํ•ด๋‹น ๊ฐ์ฒด์˜ ํด๋ž˜์Šค ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

clone

  • ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • Object์— ์ •์˜๋œ clone ๋ฉ”์†Œ๋“œ๋Š” ๋‹จ์ˆœํžˆ ๊ธฐ๋ณธํ˜• ์ž๋ฃŒํ˜•์˜ ํ•„๋“œ ๊ฐ’๋งŒ์„ ๋ณต์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ฐธ์กฐํ˜• ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ํด๋ž˜์Šค์—์„œ clone ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด clone ๋ฉ”์†Œ๋“œ๋ฅผ ์žฌ์ •์˜(Overriding)ํ•ด์•ผ ํ•œ๋‹ค.

Last updated