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