โ˜• ์ž๋ฐ” : JAVA

    [Effective Java] ์ƒ์„ฑ์ž ๋Œ€์‹  ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ ์‚ฌ์šฉํ•˜๊ธฐ

    ๋ณธ ๊ธ€์€ ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” 3ํŒ์„ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋‚ด์šฉ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ0. ์„œ๋ก  ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์€, public ์ƒ์„ฑ์ž์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ๋Š”, ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ(static factory method)๋ฅผ ๋งŒ๋“ค์–ด ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋Š” ๋‹จ์ˆœํžˆ ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ๊ทธ ์—ญํ• ์˜ ์ „๋ถ€์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ์˜ ์˜ˆ์‹œ๋กœ, Boolean ๋ž˜ํผ ํด๋ž˜์Šค์˜ valueOf ๋ฉ”์†Œ๋“œ์ž…๋‹ˆ๋‹ค. public static Boolean valueOf(boolean b){ return b ? Boolean.TRUE : Boolean.FALSE; } ๊ทธ๋ ‡๋‹ค๋ฉด ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ์žฅ์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”? ๐Ÿค” 1. ์ •์  ํŒฉํ† ..

    [Java] ์ž๋ฐ” ์ง๋ ฌํ™” (Serialization)

    [Java] ์ž๋ฐ” ์ง๋ ฌํ™” (Serialization)

    ๐Ÿค” 1. ์ž๋ฐ” ์ง๋ ฌํ™”๋ž€? ์ž๋ฐ” ์ง๋ ฌํ™”(Java Serialization)์€, ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์˜์†ํ™” ํ•˜๋Š” ๋งค์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ์˜์†ํ™”๋Š”, ์˜๊ตฌ์ ์œผ๋กœ ์†์„ฑ์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ, ์‰ฝ๊ฒŒ ํ’€์–ด์„œ ์„ค๋ช…ํ•˜๋ฉด ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์— ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ๋‚˜์ค‘์— ์žฌ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๊ณง ์ž๋ฐ” ์ง๋ ฌํ™”์˜ ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ €์žฅ์ด๋ผ๊ณ  ํ‘œํ˜„ํ–ˆ์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ €์žฅ, ํŒŒ์ผ์˜ ํ˜•ํƒœ๋กœ ์ €์žฅ๋„ ํ•ด๋‹น์ด ๋˜์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์บ์‹œ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ ์—ญ์‹œ ์ง๋ ฌํ™”๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ” ์ง๋ ฌํ™”๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ์˜จ์ „ํžˆ ๋‹ค๋ฅธ ๊ณณ์— ์ €์žฅํ•˜๊ณ , ๋‹ค์‹œ ์˜จ์ „ํ•œ ๊ฐ์ฒด๋กœ ์žฌ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๋ถ„์‚ฐ ๊ฐ์ฒด ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ” ์ง๋ ฌํ™”์—์„œ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์€, ๊ฐ์ฒด๋ฅผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์˜ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด ์ด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๐Ÿค” ..

    [Java] ์ƒ์†๋Œ€์‹  ๊ตฌ์„ฑ(Composition)์„ ์‚ฌ์šฉํ•˜์ž

    [Java] ์ƒ์†์˜ ์žฅ๋‹จ์ , ์ƒ์†์€ ์–ธ์ œ ์จ์•ผ ํ•˜๋Š”๊ฐ€? ๐Ÿง 1. ์ƒ์†์ด ๋ญ์ฃ ? [Java] ์ƒ์†(Inheritance) ์‚ฌ์šฉ๋ฒ•๊ณผ ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ๐Ÿง 1. ์ƒ์†์ด ๋ญ์ฃ ? ํ˜„์‹ค์„ธ๊ณ„์—์„œ์˜ ์ƒ์†์€, ๋ถ€๋ชจ๊ฐ€ ์ž์‹์—๊ฒŒ ์žฌ์‚ฐ์„ ๋ฌผ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ž์‹์€ ์ƒ์†์„ ๋ฐ›์œผ๋ฉด hoons-dev.tistory.com ์ด์ „ ๊ธ€์—์„œ ์ƒ์†์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์บก์Šํ™”๊ฐ€ ๊นจ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ์š”? ๋ฐ”๋กœ, ์ƒ์† ๋Œ€์‹  ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๐Ÿค” 1. ๊ตฌ์„ฑ? ์ƒ์†์—์„œ ๊ตฌ์„ฑ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€, ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ extends ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ž์‹ ํด๋ž˜์Šค ๋ถ€๋ถ„์— private ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. class Base {} /* ์ƒ์† */ class Child extends ..

    [Java] ์ƒ์†์˜ ์žฅ๋‹จ์ , ์ƒ์†์€ ์–ธ์ œ ์จ์•ผ ํ•˜๋Š”๊ฐ€?

    ๐Ÿง 1. ์ƒ์†์ด ๋ญ์ฃ ? [Java] ์ƒ์†(Inheritance) ์‚ฌ์šฉ๋ฒ•๊ณผ ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ๐Ÿง 1. ์ƒ์†์ด ๋ญ์ฃ ? ํ˜„์‹ค์„ธ๊ณ„์—์„œ์˜ ์ƒ์†์€, ๋ถ€๋ชจ๊ฐ€ ์ž์‹์—๊ฒŒ ์žฌ์‚ฐ์„ ๋ฌผ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ž์‹์€ ์ƒ์†์„ ๋ฐ›์œผ๋ฉด ๋ถ€๋ชจ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ์ž์›์„ ๊ทธ๋Œ€๋กœ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ƒ์†์„ ํ•ด์ฃผ๋ฉด ํ˜„์‹ค์„ธ๊ณ„ hoons-dev.tistory.com ์ด์ „ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด, ์ƒ์†์˜ ์‚ฌ์šฉ๋ฒ•๊ณผ ์ž๋ฐ”์˜ ์ƒ์†์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ฎ 2. ์ƒ์†์˜ ์žฅ๋‹จ์  ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์ƒ์†์˜ ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. - ์ฝ”๋“œ์˜ ํ™•์žฅ์„ฑ, ์žฌ์‚ฌ์šฉ์„ฑ ์ƒ์Šน - ์ค‘๋ณต๋œ ์ฝ”๋“œ ์ œ๊ฑฐ๊ฐ€๋Šฅ - ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ์˜ ๋‹คํ˜•์„ฑ ๋‹ค๋งŒ, ์ƒ์†์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•œ ์ƒํƒœ์—์„œ ์ƒ์†์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ์ƒ์†์—๋„ ๋งŽ์€ ๋‹จ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ƒ์†์€ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ์ˆ˜๋‹จ..

    [Java] ์ƒ์†(Inheritance) ์‚ฌ์šฉ๋ฒ•๊ณผ ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

    ๐Ÿง 1. ์ƒ์†์ด ๋ญ์ฃ ? ํ˜„์‹ค์„ธ๊ณ„์—์„œ์˜ ์ƒ์†์€, ๋ถ€๋ชจ๊ฐ€ ์ž์‹์—๊ฒŒ ์žฌ์‚ฐ์„ ๋ฌผ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ž์‹์€ ์ƒ์†์„ ๋ฐ›์œผ๋ฉด ๋ถ€๋ชจ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ์ž์›์„ ๊ทธ๋Œ€๋กœ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ƒ์†์„ ํ•ด์ฃผ๋ฉด ํ˜„์‹ค์„ธ๊ณ„์˜ ๋ถ€๋ชจ๋Š” ์žฌ์‚ฐ์„ ๋ฌผ๋ ค์คฌ๊ธฐ ๋•Œ๋ฌธ์— ๋‚จ๋Š” ์žฌ์‚ฐ์ด ์—†์ง€๋งŒ, ์ž๋ฐ”์˜ ์ƒ์†์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ์˜ ์ƒ์†(Inheritance)์€, ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๋ฌผ๋ ค๋ฐ›์Šต๋‹ˆ๋‹ค. class Parent{ // ํ•„๋“œ public String value1; // ๋ฉ”์†Œ๋“œ public String getValue1(){ return this.value1; } } ์ฆ‰, Parent ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” Child๊ฐ€ ์žˆ๋‹ค๋ฉด, ํ•ด๋‹น Child ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ์˜ value1 ํ•„๋“œ์™€, getValue1 ๋ฉ”์†Œ๋“œ ๋ชจ๋‘ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ์ƒ์†์„..