ITEM 12: overriding toString

Object์˜ ๊ธฐ๋ณธ toString ๋ฉ”์„œ๋“œ๋Š” ๋‹จ์ˆœํžˆ ํด๋ž˜์Šค_์ด๋ฆ„@16์ง„์ˆ˜ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

toString์˜ ์ผ๋ฐ˜ ๊ทœ์•ฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ๊ฐ„๊ฒฐํ•˜๋ฉด์„œ ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฌ์šด ํ˜•ํƒœ์˜ ์œ ์ตํ•œ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜

  • ๋ชจ๋“  ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์ด ๋ฉ”์„œ๋“œ(toString)๋ฅผ ์žฌ์ •์˜ํ•˜๋ผ

toString์„ ์ž˜ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋Š” ๋””๋ฒ„๊น…์— ์œ ์šฉํ•˜๋ฉฐ, ์ง์ ‘ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋”๋ผ๋„ ๋‹ค๋ฅธ ์–ด๋”˜๊ฐ€(println, printf, ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž, assert ์— ์ž๋™์œผ๋กœ ํ˜ธ์ถœ)์—์„œ ์“ฐ์ผ ๊ฒƒ์ด๋‹ค.

๋งŒ์•ฝ toString์„ ์ œ๋Œ€๋กœ ์žฌ์ •์˜ํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ ์ฝ”๋“œ๋งŒ์œผ๋กœ๋„ ๋กœ๊ทธ๋ฅผ ์ถฉ๋ถ„ํžˆ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.

System.out.println(phoneNumber + "์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");

toString์„ ์ž˜ ์ •์˜ํ•˜๋ฉด ์ปฌ๋ ‰์…˜๊ณผ ๊ฐ™์ด ์ด ์ธ์Šคํ„ด์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒด์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ธ๋‹ค.

  • toString์€ ๊ทธ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง„ ์ฃผ์š” ์ •๋ณด๋ฅผ ๋ชจ๋‘ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

ํ•˜์ง€๋งŒ ๊ฐ์ฒด๊ฐ€ ๊ฑฐ๋Œ€ํ•˜๊ฑฐ๋‚˜ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ฌธ์ž์—ด๋กœ ํ‘œํ˜„ํ•˜๊ธฐ์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๋ฉด ๋ฌด๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์—๋Š” ์š”์•ฝ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

  • ํฌ๋งท์„ ๋ช…์‹œํ•˜๋“  ์•„๋‹ˆ๋“  ์˜๋„๋Š” ๋ช…ํ™•ํžˆ ๋ฐํ˜€์•ผํ•œ๋‹ค.

  • toString์ด ๋ฐ˜ํ™˜ํ•œ ๊ฐ’์— ํฌํ•จ๋œ ์ •๋ณด๋ฅผ ์–ป์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” API๋ฅผ ์ œ๊ณตํ•˜์ž

์˜ˆ๋ฅผ๋“ค์–ด ์•ž์„œ ์ƒ์„ฑํ•œ PhoneNumber ํด๋ž˜์Šค๋Š” ์ง€์—ญ ์ฝ”๋“œ, ํ”„๋ฆฌํ•„์Šค, ๊ฐ€์ž…์ž ๋ฒˆํ˜ธ์šฉ ์ ‘๊ทผ์ž๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ด ์ •๋ณด๊ฐ€ ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” toString์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ํŒŒ์‹ฑํ•ด์•ผํ•˜๋ฉฐ, ์ด๋Š” ์„ฑ๋Šฅ์ด ๋‚˜๋น ์งˆ ๋ฟ๋”๋Ÿฌ, ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ž‘์—…์ด๋‹ค.

์ •์  ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค๋Š” toString์„ ์ œ๊ณตํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ์—ด๊ฑฐํƒ€์ž…๋„ ์ž๋ฐ”๊ฐ€ ์ด๋ฏธ ์™„๋ฒฝํ•œ toString์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๋”ฐ๋กœ ์ œ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

Last updated