๐Ÿ’ป

Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ฐ์ฒดํƒ€์ž…ํ™•์ธ(instanceof), ์‹ฑ๊ธ€ํ†ค ํ•จ์ˆ˜(Singleton) ๋ณธ๋ฌธ

KITRI/JAVA

Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ฐ์ฒดํƒ€์ž…ํ™•์ธ(instanceof), ์‹ฑ๊ธ€ํ†ค ํ•จ์ˆ˜(Singleton)

๋˜ํšจ๋‹ˆ 2020. 5. 11. 14:57

๊ฐ์ฒด ํƒ€์ž… ํ™•์ธ(instanceof)

 

๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜์€ ์ž์‹ ํƒ€์ž…์ด ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์žˆ๋Š” ์ƒํƒœ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ€๋ชจ ํƒ€์ž…์˜ ๋ณ€์ˆ˜๊ฐ€ ๋ถ€๋ชจ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ๊ฒฝ์šฐ ์ž์‹ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋‹ค.

 

Parent parent = new Parent();
Child child = (Child) Parent;  //๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜์„ ํ•  ์ˆ˜ ์—†๋‹ค. 

Parent parent = new Child();  //upCasting
Child child = (Child) Parent; //๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. downCasting

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ถ€๋ชจ ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ๋ถ€๋ชจ ๊ฐ์ฒด์ธ์ง€ ์ž์‹ ๊ฐ์ฒด์ธ์ง€ ์–ด๋–ป๊ฒŒ ํ™•์ธํ• ๊นŒ?

์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์ธ์ง€ ํ™•์ธํ•˜๋ ค๋ฉด instanceof ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

shape ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ Line์ธ์ง€ 

shape ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ Line์ธ์ง€, ์ฆ‰ Line ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•˜์—ฌ ๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜์„ ํ•ด์ค€๋‹ค. 

 

์ •๋ฆฌํ•˜์ž๋ฉด, ๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜์„ ํ•˜๊ธฐ ์ „์— instanceof ์—ฐ์‚ฐ์ž๋กœ ๋ณ€ํ™˜์‹œํ‚ฌ ํƒ€์ž…์˜ ๊ฐ์ฒด์ธ์ง€ ์กฐ์‚ฌํ•ด์„œ ์ž˜๋ชป๋œ ๋งค๊ฐœ๊ฐ’์œผ๋กœ ์ธํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์„ ๋ง‰์•„์•ผํ•œ๋‹ค. 

 

 

 

 

 

์‹ฑ๊ธ€ํ†ค(Singleton)

 

์ƒ์„ฑ์ž๊ฐ€ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ํ˜ธ์ถœ๋˜๋”๋ผ๋„ ์‹ค์ œ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋Š” ํ•˜๋‚˜์ด๊ณ  ์ตœ์ดˆ ์ƒ์„ฑ ์ดํ›„์— ํ˜ธ์ถœ๋œ ์ƒ์„ฑ์ž๋Š” ์ตœ์ดˆ์˜ ์ƒ์„ฑ์ž๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. 

 

๋ฉ”์„œ๋“œ์™€ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ ๋ชจ๋‘ static์œผ๋กœ ์„ ์–ธํ•œ๋‹ค.

 

๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ private ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ์„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ  getInstance๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. getInstance๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ƒ์„ฑํ•˜๊ณ , ๊ธฐ์กด์— ์ƒ์„ฑ๋œ ๊ฐ’์ด ์กด์žฌํ•œ๋‹ค๋ฉด ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ˜•ํƒœ๋กœ ํ”„๋กœ๊ทธ๋žจ ์ „๋ฐ˜์— ๊ฑธ์ณ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

 

์‹คํ–‰ํ™”๋ฉด

 

 

 

๋ฐ˜์‘ํ˜•
Comments