๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
FOR SW ENGINEER๐Ÿ‘ฉ‍๐Ÿ’ป/JAVA

๊ตญ๋น„JAVA์ˆ˜์—… DAY-13

by ์”จ๋‹ˆ 2021. 9. 2.
728x90

๊ตญ๋น„ JAVA 13์ผ์ฐจ ์ˆ˜์—…!!

์˜ค๋Š˜์€ ์ ‘๊ทผ์ œํ•œ์ž์™€ ์€๋‹‰(Getter, Setter)์— ๋Œ€ํ•ด์„œ ๋ฐฐ์› ๋‹ค!

๊ทธ๋Ÿผ 13์ผ์ฐจ ์š”์ ์‹œ์ž‘~~!๐Ÿ™Œ

 

 

1.์ ‘๊ทผ์ œํ•œ์ž                                                                 

- ์ ‘๊ทผ ์ œํ•œ์ž๋Š” ํด๋ž˜์Šค์™€ ๋ฉค๋ฒ„๋ณ€์ˆ˜, ๋ฉ”์„œ๋“œ, ์ƒ์„ฑ์ž์˜ ์ ‘๊ทผ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์ œํ•œ์ž.

- ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ ํ•  ๋•Œ ์™ธ๋ถ€ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉค๋ฒ„์™€ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๋ฉค๋ฒ„๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๋ณ€์ˆ˜, ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•จ.

- ์™ธ๋ถ€์—์„œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ง‰๊ธฐ ์œ„ํ•ด ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๊ฐ์ฒด ํŠน์ • ๋ฐ์ดํ„ฐ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ๋ฉค๋ฒ„๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰๋Š”๊ฒƒ์ด ์ ‘๊ทผ ์ œํ•œ์ž์˜ ์—ญํ• .

- ํด๋ž˜์Šค์—๋Š” ์ ‘๊ทผ์ œํ•œ์ž๋ฅผ public๊ณผ default๋งŒ ๋ถ™์ผ ์ˆ˜ ์žˆ์Œ.

 

โ–ถ public : ๊ฐ™์€ ํด๋ž˜์Šค, ํŒจํ‚ค์ง€, ๋‹ค๋ฅธํŒจํ‚ค์ง€๋ฅผ ๋ง‰๋ก ํ•˜๊ณ  ์ ‘๊ทผ ๊ฐ€๋Šฅ

 

โ–ถ protected : ๊ฐ™์€ ํด๋ž˜์Šค, ํŒจํ‚ค์ง€๋Š” ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์†ํ•ด์žˆ๋Š” ํด๋ž˜์Šค ์ƒ์†๊ด€๊ณ„ ์—†์œผ๋ฉด ์ ‘๊ทผ๋ถˆ๊ฐ€

 

โ–ถ default(์ ‘๊ทผ ์ œํ•œ์ž๋ฅผ ๋ถ™์ด์ง€ ์•Š๋Š” ํ˜•ํƒœ) : ๊ฐ™์€ ํด๋ž˜์Šค, ํŒจํ‚ค์ง€๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ. ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ.

 

โ–ถprivate : ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด๋ถ€ ์•„๋‹ˆ๋ฉด ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ.

 

1-1) ์ ‘๊ทผ์ œํ•œ์ž ์˜ˆ์ œ

modi.cls.pac1ํŒจํ‚ค์ง€ ๋‚ด 2๊ฐœ์˜ A,Bํด๋ž˜์Šค / modi.cls.pac2ํŒจํ‚ค์ง€ ๋‚ด Cํด๋ž˜์Šค

Aํด๋ž˜์Šค๋Š” Public, Bํด๋ž˜์Šค๋Š” private(์ž‘์„ฑ์•ˆํ•ด๋„ ๋จ.)

Aํด๋ž˜์Šค์™€ Bํด๋ž˜์Šค๋ฅผ Cํด๋ž˜์Šค๋กœ ๊ฐ€์ ธ์™€ ์ž‘์„ฑํ•˜๋ฉด Aํด๋ž˜์Šค๋Š” ์ ‘๊ทผ์ œํ•œ์ž public์ด๋ฏ€๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅ

๊ทธ๋Ÿฌ๋‚˜ Bํด๋ž˜์Šค๋Š” ์ ‘๊ทผ์ œํ•œ์ž๊ฐ€ default์ด๋ฏ€๋กœ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ๋ถˆ๊ฐ€.

 

1-2) ์ ‘๊ทผ์ œํ•œ์ž 2๋ฒˆ์งธ ์˜ˆ์ œ

modi.constuct.pac1ํŒจํ‚ค์ง€์•ˆ A,Bํด๋ž˜์Šค / modi.construct.pac2ํŒจํ‚ค์ง€๋‚ด Cํด๋ž˜์Šค

Aํด๋ž˜์Šค์—๋Š” ์ ‘๊ทผ์—ฐ์‚ฐ์ž๊ฐ€ public์ธ intํ˜• A / default์ธ booleanํ˜• A / private์ธ Stringํ˜• A 3๊ฐœ์˜ ์ƒ์„ฑ์ž ์กด์žฌ

Aํด๋ž˜์Šค๋‚ด ์ƒ์„ฑ์ž๋“ค์„ Bํด๋ž˜์Šค์™€ Cํด๋ž˜์Šค์— ์ ‘๋ชฉ์‹œํ‚ค๋ฉด

โ—Ž Bํด๋ž˜์Šค - ์ ‘๊ทผ์—ฐ์‚ฐ์ž๊ฐ€ public ๊ณผ default A๋Š” B๊ฐ€ A์™€ ๊ฐ™์€ ํŒจํ‚ค์ง€์ด๋ฏ€๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅ

                           - private A๋Š” ์˜ค์ง ๊ฐ™์€ ํด๋ž˜์Šค๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— Bํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ๋ถˆ๊ฐ€

โ—Ž Cํด๋ž˜์Šค - ์ ‘๊ทผ์—ฐ์‚ฐ์ž๊ฐ€ public์ธ A๋Š” ์–ด๋””๋“ ์ง€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— Cํด๋ž˜์Šค์— ์ ‘๊ทผ๊ฐ€๋Šฅ

                               - ์ ‘๊ทผ์—ฐ์‚ฐ์ž default ์™€ private๋Š” ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์—์„œ ์‚ฌ์šฉ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— Cํด๋ž˜์Šค ์ ‘๊ทผ๋ถˆ๊ฐ€

 

1-3) ์ ‘๊ทผ์—ฐ์‚ฐ์ž 3๋ฒˆ์งธ ์˜ˆ์ œ

modi.member.pac1ํŒจํ‚ค์ง€ ๋‚ด A,Bํด๋ž˜์Šค / modi.member.pac2ํŒจํ‚ค์ง€ ๋‚ด Cํด๋ž˜์Šค

์œ„์˜ ์˜ˆ์ œ๋Š” A์— ์„ ์–ธํ•œ ๋ฉค๋ฒ„๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ๋ฅผ B์™€ Cํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณด๋Š” ์˜ˆ์ œ์ด๋‹ค.

A์—์„œ ์„ ์–ธํ•œ ๋ฉค๋ฒ„๋ณ€์ˆ˜ : public var1, default var2, private var3

A์—์„œ ์„ ์–ธํ•œ ๋ฉ”์†Œ๋“œ : public method01, default method02, private method03

Bํด๋ž˜์Šค : A์™€ ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์— ์žˆ์œผ๋ฏ€๋กœ ๋ฉค๋ฒ„๋ณ€์ˆ˜ var1, var2 ๊ทธ๋ฆฌ๊ณ  ๋ฉ”์†Œ๋“œ method01, method02์‚ฌ์šฉ๊ฐ€๋Šฅ

        var3์™€ method03์˜ ์ ‘๊ทผ์—ฐ์‚ฐ์ž๋Š” ์ž์‹ ์˜ ํด๋ž˜์Šค ๋‚ด์—์„œ๋ฉด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ private์ด๊ธฐ์— ์‚ฌ์šฉ๋ถˆ๊ฐ€

Cํด๋ž˜์Šค : A์™€Bํด๋ž˜์Šค์™€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋‚ด์— ์žˆ์œผ๋ฏ€๋กœ ์ ‘๊ทผ์—ฐ์‚ฐ์ž๊ฐ€ public์ธ var1๊ณผ method03๋งŒ ์ ‘๊ทผ๊ฐ€๋Šฅ      

                   var2, method02๋Š” ์„ ์–ธ๋œ ํŒจํ‚ค์ง€๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ณ , var3์™€ method03์€ ์„ ์–ธ๋œ ํด๋ž˜์Šค ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ Cํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ๋ถˆ๊ฐ€.

 

1-4) ์ ‘๊ทผ์—ฐ์‚ฐ์ž 4๋ฒˆ์จฐ ์˜ˆ์ œ

modi.protect.pac1ํŒจํ‚ค์ง€ ๋‚ด A,Bํด๋ž˜์Šค / modi.protect.pac2๋‚ด Cํด๋ž˜์Šค

์œ„์˜ ์˜ˆ์ œ๋Š” ์ ‘๊ทผ์—ฐ์‚ฐ์ž protected๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค.

Protected๋Š” ๊ฐ™์€ ํŒจํ‚ค์ง€๋‚ด ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋‹ค.(์ ‘๊ทผ์—ฐ์‚ฐ์ž default์™€ ๋™์ผํ•จ)

๋‹จ, ํŒจํ‚ค์ง€๊ฐ€ ๋‹ฌ๋ผ๋„ protected๋Š” super()๋ฅผ ์ด์šฉํ•ด ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Œ.

A์—๋Š” ์ ‘๊ทผ์—ฐ์‚ฐ์ž protected๋กœ ์„ ์–ธํ•œ ๋ฉค๋ฒ„๋ณ€์ˆ˜ a, ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ์žˆ์Œ.

Bํด๋ž˜์Šค : protected๋Š” ํŒจํ‚ค์ง€๋‚ด ๋ชจ๋“  ํด๋ž˜์Šค ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋ฉค๋ฒ„๋ณ€์ˆ˜, ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ ๋ชจ๋‘ ์‚ฌ์šฉ๊ฐ€๋Šฅ.

Cํด๋ž˜์Šค : protected๋Š” super() ์‚ฌ์šฉํ•ด์„œ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฉค๋ฒ„๋ณ€์ˆ˜, ์ƒ์„ฑ์ž,๋ฉ”์„œ๋“œ ๋ชจ๋‘ ์‚ฌ์šฉ๊ฐ€๋Šฅ!

 

 

 

2. ์€๋‹‰(Encapsulation) - ์บก์Šํ™”

- ์€๋‹‰์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ƒ์„ธํ•œ ๋‚ด๋ถ€๊ตฌํ˜„ ์ˆจ๊ธฐ๊ณ  ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ณด์ด๊ฒŒ ํ•จ.

- ์€๋‹‰์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ํด๋ž˜์Šค ๋ฉค๋ฒ„๋ณ€์ˆ˜ ์ ‘๊ทผ์ œํ•œ์ž private๋กœ ์„ค์ •.

- ์€๋‹‰๋œ ๋ฉค๋ฒ„๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๊ฐœ๋œ(public) ๋ฉ”์„œ๋“œ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ณ€์ˆ˜์˜ ๊ฐ’ ๋ณ€๊ฒฝ์‹œํ‚ค๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ๋Š” setter๋ฉ”์„œ๋“œ๋ผ ๋ถ€๋ฅด๊ณ , ๋ณ€์ˆ˜์˜ ๊ฐ’ ์–ป์–ด์˜ค๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ getter๋ฉ”์„œ๋“œ๋ผ๊ณ  ๋ถ€๋ฆ„.

- ๊ณต๊ฐœ๋œ ๋ฉ”์„œ๋“œ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์‹œํ‚ฌ ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ ๋‚ด ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋Š” ๋ฃจํ‹ด ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ.

- ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ ‘๊ทผ ๊ถŒํ•œ ์ฒดํฌํ• ์ˆ˜ ์žˆ๋Š” ๋กœ์ง ํฌํ•จ์‹œํ‚ค๋ฉด ์ธ๊ฐ€๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ/๋กœ์ง ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Œ.

- ๋ฉค๋ฒ„๋ณ€์ˆ˜๋งŒ private๊ฐ–๋Š”๊ฒŒ ์•„๋‹ˆ๊ณ , ์™ธ๋ถ€์— ๊ณต๊ฐœํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๋ฉ”์„œ๋“œ๋“ค๋„ private๋กœ ์„ ์–ธ๊ฐ€๋Šฅ.

- ๋ณ€์ˆ˜ ์ ‘๊ทผ์ œํ•œ public์œผ๋กœ ์—ด์–ด๋‘๋ฉด ๋ชจ๋“  ๊ฐ’์ด ์ €์žฅ๋ ์ˆ˜ ์žˆ์Œ, but ์ž˜๋ชป๋œ ๊ฐ’๊นŒ์ง€๋„ ์ €์žฅ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์€๋‹‰์‚ฌ์šฉ.

 

โ–ถ์€๋‹‰์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๊ฒฝ์šฐ

์€๋‹‰์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๊ฒฝ์šฐ

์œ„์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ์€๋‹‰์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋งž์ง€์•Š๋Š” ์ •๋ณด์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ฐ’์„ ๋ฐ›์•„์„œ ์ถœ๋ ฅํ•˜๊ฒŒ ๋จ.

 

โ–ถ์€๋‹‰์„ ์‚ฌ์šฉํ•œ ์ข‹์€ ์˜ˆ

์€๋‹‰์„ ์‚ฌ์šฉํ•œ ์ข‹์€ ์˜ˆ(setter&getter์‚ฌ์šฉ)
setter์‚ฌ์šฉํ•ด ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  getter๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ’์„ ์กฐํšŒํ•จ

์œ„์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ setter๋ฅผ์‚ฌ์šฉํ•ด ์กฐ๊ฑด์—๋”ฐ๋ผ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์™ธ๋ถ€์—์„œ getter๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

๊ฒฐ๊ณผ๋Š” ์ด์ƒํ•œ ๊ฐ’์ด ์•„๋‹Œ ์›ํ•˜๋Š” ์กฐ๊ฑด์— ๋งž๋Š” ๊ฐ’์ด ์ €์žฅ๋œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

 

โ–ถ ์€๋‹‰ ์‚ฌ์šฉ ๋‘๋ฒˆ์งธ ์˜ˆ์‹œ

getter์™€ setter์‚ฌ์šฉํ•œ main๋ฌธ
h.getChef().cooking()(Hotel->getChef->cooking) ==>"์š”๋ฆฌํ•ฉ๋‹ˆ๋‹ค." / h.getEmp().working()(Hotel->getEmp->working) ==> "์ฒญ์†Œํ•ฉ๋‹ˆ๋‹ค."

 

โ–ถ++์•Œ์•„๋‘๋ฉด ์ข‹์€ ๋‹จ์ถ•ํ‚ค++

โ—Ž ๊ธฐ๋ณธ์ƒ์„ฑ์ž ์ƒ์„ฑ ๋‹จ์ถ•ํ‚ค : ctrl + space + enter

โ—Ž์ƒ์„ฑ์ž & getter/setter์ƒ์„ฑ ๋‹จ์ถ•ํ‚ค : alt + shift +s  -> ์›ํ•˜๋Š” ์ž๋™์™„์„ฑ๋ฉ”๋‰ด ํด๋ฆญ

728x90