๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming/Java, Kotlin

์ž๋ฐ”[Java] ์ ‘๊ทผ ์ œ์–ด์ž[Access modifier]

728x90
๋ฐ˜์‘ํ˜•

์ž๋ฐ”์˜ ์ ‘๊ทผ ์ œ์–ด์ž default / public(package) / private / protected / static / final

โ–ถ default(package)

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ ‘๊ทผ ์ œ์–ด์ž๋กœ ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๋‹ค. => ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ์ƒ๋žตํ•˜๋ฉด default๋กœ ์„ค์ •๋œ๋‹ค.

default๋Š” ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์— ์žˆ๋Š” class๋ผ๋ฉด ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

testPackage1 ํŒจํ‚ค์ง€ / TestClass1 ํด๋ž˜์Šค
testPackage2 ํŒจํ‚ค์ง€ / TestClass2 ํด๋ž˜์Šค

1๋ฒˆ ํŒจํ‚ค์ง€์— 1๋ฒˆ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜์˜€๋‹ค.

2๋ฒˆ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค๊ณ  2๋ฒˆ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  2๋ฒˆ ํด๋ž˜์Šค์— 1๋ฒˆ ํด๋ž˜์Šค๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ(import)๋ฅผ ํ–ˆ์„ ๋•Œ, ์˜ค๋ฅ˜ ๋ฐœ์ƒ

=> ๊ฐ™์€ ํŒจํ‚ค์ง€ ์•ˆ์—์„œ๋งŒ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๊ฐ€๋Šฅ

 

โ–ถ public

์ด๋ฆ„์ฒ˜๋Ÿผ ์–ด๋””์„œ๋“  ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ์•ˆ์˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ๋„ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

testPackage1 / TestClass1

testPackage1 ํŒจํ‚ค์ง€์— ์žˆ๋Š” TestClass2 ํด๋ž˜์Šค์˜  ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ public์œผ๋กœ ๋ณ€๊ฒฝํ•ด์คฌ๋‹ค.

testPackage2 ํŒจํ‚ค์ง€ / TestClass2 ํด๋ž˜์Šค

testPackage2 ํŒจํ‚ค์ง€์˜ TestClass2 ํด๋ž˜์Šค์—์„œ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์žˆ๋Š” TestClass1์„ ๋ถˆ๋Ÿฌ์™€๋„ ์ž˜ ์ž‘๋™๋œ๋‹ค.

โ–ถ private

์ž์‹ ์„ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ

 

์˜ค์ง ์ž์‹ ์˜ ํด๋ž˜์Šค ์•ˆ์—์„œ๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

private / public ์œผ๋กœ ํ•„๋“œ ๊ฐ’ ์ƒ์„ฑ
public ์œผ๋กœ ์ •์˜๋œ publicNum๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

testPackage1 ํŒจํ‚ค์ง€์˜ TestClass1 ํด๋ž˜์Šค์— ํ•„๋“œ ๊ฐ’์„ ์ƒ์„ฑํ–ˆ๋‹ค. (public int, private int 1๊ฐœ์”ฉ)

TestClass1์€ public์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํŒจํ‚ค์ง€(testPackage2)์—์„œ ๋‹ค๋ฅธ ํด๋ž˜์Šค(testClass2)๋กœ import ํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ, ํ•„๋“œ ๊ฐ’์€ publicNum ๋ฐ–์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•œ๋‹ค.

 

 

โ–ท private ์ ‘๊ทผ์ž๋ฅผ ์“ฐ๋Š” ์ด์œ ?

 

ํด๋ž˜์Šค๋Š” ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์„ ์ •๋ฆฌํ•ด ๋†“๊ณ  ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ๊ตฌ์ฒดํ™”์‹œ์ผœ์„œ ์‚ฌ์šฉํ•œ๋‹ค. ex). ์ƒ์œ„ ํด๋ž˜์Šค : ๋„ํ˜•, ๋™๋ฌผ... / ํ•˜์œ„ ํด๋ž˜์Šค : ์‚ฌ๊ฐํ˜•, ์‚ผ๊ฐํ˜•...    ๊ฐ•์•„์ง€, ๊ณ ์–‘์ด...

 

์ด๋•Œ, ๊ฐ€์žฅ ํฐ ํ‹€์ธ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ํ•„๋“œ ๊ฐ’์„ ์ง์ ‘ ์ ‘๊ทผํ•˜๋ฉด ํ•˜์œ„ ํด๋ž˜์Šค๋“ค์—๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์‚ฌ์šฉ์ž์˜ ์ž˜๋ชป๋œ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›์„ ์ˆ˜๋„ ์žˆ๋‹ค.

 

ex): ์ž˜๋ชป๋œ ๊ฐ’ ๋Œ€์ž… : 1~100๊นŒ์ง€๋งŒ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ๋ณ€์ˆ˜์— ์‚ฌ์šฉ์ž๊ฐ€ 200์„ ์ €์žฅ 

 

์ด ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ์ผ๋ฐ˜์ ์œผ๋กœ ํ•„๋“œ ๊ฐ’์€ private๋กœ ์ •์˜ํ•˜๊ณ  getter / setter ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ํ•„๋“œ ๊ฐ’์— ์ ‘๊ทผํ•œ๋‹ค.

โ–ถ protected

๊ฐ™์€ ํŒจํ‚ค์ง€ ํ˜น์€ ์ƒ์†ํ•œ ํ•˜์œ„(์ž์‹, ์„œ๋ธŒ) ํด๋ž˜์Šค์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ / ์ƒ์†๋ฐ›์ง€ ์•Š์€ ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์—์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ

protected / private ์ ‘๊ทผ ์ œ์–ด์ž ํ•„๋“œ ๊ฐ’ ์ƒ์„ฑ
ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํ•„๋“œ ๊ฐ’ ํ™•์ธ 

testPackage1 ํŒจํ‚ค์ง€ ์•ˆ์˜ ์ƒ์œ„ ํด๋ž˜์Šค์ธ SuperClass์—์„œ protected์™€ private ํ•„๋“œ ๊ฐ’์„ ๊ฐ๊ฐ ์ƒ์„ฑํ–ˆ์„ ๋•Œ,

testPackage2 ํŒจํ‚ค์ง€์—์„œ ํ•˜์œ„ ํด๋ž˜์Šค์ธ SubClass์—์„œ๋Š” protected๋กœ ์ •์˜๋œ ํ•„๋“œ ๊ฐ’๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

โ–ถ static

โ–ท๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌ

 

static์œผ๋กœ ์ •์˜๋œ ๊ฐ์ฒด๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜๋ฉด์„œ ์‚ฌ์šฉ๋œ๋‹ค.

 

์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ฒŒ ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ, ์ƒ์ˆ˜ ๊ฐ’์ฒ˜๋Ÿผ ๋ณ€ํ•จ์—†๋Š” ๊ฐ’์˜ ๊ฒฝ์šฐ ๋ฐ˜๋ณตํ•ด์„œ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ญ๋น„ํ•˜๋Š” ๊ผด์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋•Œ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋Š” ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ ๋ฒˆ๋งŒ ์ €์žฅ์‹œํ‚จ ํ›„ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. 

 

ex)

A ํด๋ž˜์Šค์—๋Š” ๋ฐ์ดํ„ฐ1, ๋ฐ์ดํ„ฐ 2, ๋ฐ์ดํ„ฐ 3 ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •

 

๋ฐ์ดํ„ฐ 1์€ ๊ฐ’์ด ์ ˆ๋Œ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, Aํด๋ž˜์Šค๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์ƒ์„ฑํ•˜๊ฒŒ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋˜๋ฉด ๋ณ€ํ•˜์ง€ ์•Š์„ ๊ฐ’์ธ ๋ฐ์ดํ„ฐ 1์„ ๋ฐ˜๋ณตํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ฒŒ ๋˜์–ด ๋น„ํšจ์œจ์ ์ด๋‹ค.

 

๋ณ€ํ•˜์ง€ ์•Š์„ ๋ฐ์ดํ„ฐ ๊ฐ’(์˜ˆ๋ฅผ ๋“ค์–ด ์ƒ์ˆ˜) ์€ static์œผ๋กœ ์ •์˜ํ•˜์—ฌ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ -> ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ ์ฆ๊ฐ€

 

 

 

 

 

 

 

 

โ–ทstatic๋ผ๋ฆฌ๋งŒ ํ˜ธํ™˜

 

static์œผ๋กœ ์ •์˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋””์„œ๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

static์œผ๋กœ ์ •์˜๋œ ๋ฐ์ดํ„ฐ๋Š” ๊ฐ™์ด static์œผ๋กœ ์ •์˜๋œ ํด๋ž˜์Šค์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋Œ€ํ‘œ์ ์ธ static ํด๋ž˜์Šค๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๋Š” main ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค.

static ๋ฐ์ดํ„ฐ์™€ static ํด๋ž˜์Šค

static์œผ๋กœ ์ •์˜๋œ main ํด๋ž˜์Šค์—์„œ static์œผ๋กœ ์ •์˜๋œ MAX_NUM ๋ฐ์ดํ„ฐ ๊ฐ’์ด ์ž˜ ์‚ฌ์šฉ๋œ๋‹ค.

static ๋ฐ์ดํ„ฐ์™€ static์ด ์•„๋‹Œ ํด๋ž˜์Šค

static์ด ์•„๋‹Œ ํด๋ž˜์Šค ์•ˆ์—์„œ static์œผ๋กœ ์ •์˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•  ๋•Œ์˜ ๋ชจ์Šต์ด๋‹ค.

 

ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์ „์—๋Š” ๋ฌธ๋ฒ•์  ์—๋Ÿฌ๊ฐ€ ์—†์–ด์„œ ๊ฒฝ๊ณ ๋ฌธ์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์ง€๋งŒ, ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ์œ„์ฒ˜๋Ÿผ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉฐ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

 

MAX_NUM์€ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผ๋˜๋Š” static ๋ฐ์ดํ„ฐ์ธ๋ฐ static์ด ์•„๋‹Œ ํด๋ž˜์Šค์—์„œ ๋ถˆ๋Ÿฌ์™”๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ด์ฒ˜๋Ÿผ static ๋ฐ์ดํ„ฐ๋Š” static ํด๋ž˜์Šค์—์„œ๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

 

โ–ถ final

์ƒ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ์ ‘๊ทผ ์ œ์–ด์ž

 

final์˜ ๊ฒฝ์šฐ๋Š” static์—์„œ ์ž ๊น ๋‚˜์™”๋Š”๋ฐ ์ƒ์ˆ˜(๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’)๋ฅผ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

์ƒ์ˆ˜ ๊ฐ’ ๋ณ€๊ฒฝ ์˜ค๋ฅ˜

final๋กœ ์ •์˜๋œ MAX_NUM์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

๋ณ€๊ฒฝ๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๊ฐ’์ด ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž ํ˜น์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ค์ˆ˜๋กœ๋ผ๋„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋„๋กœ final๋กœ ์ •์˜ํ•œ๋‹ค.

 

โ–ท ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์ƒˆ๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ

 

final๋กœ ์ •์˜๋œ ๊ฐ’์€ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์ƒˆ๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค. -> ๊ฐ™์€ ์ด๋ฆ„, ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ

 

ํ•˜์œ„ ํด๋ž˜์Šค๋Š” ์ƒ์œ„ ํด๋ž˜์Šค์— ์ข…์†๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์— ์ง์ ‘ ๊ฐ€๋Šฅ, ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ MAX_NUM ์ƒ์ˆ˜ ๊ฐ’ ์ƒˆ๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ

์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ƒ์ˆ˜ ๊ฐ’ ์ •์˜
ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์ƒ์ˆ˜ ๊ฐ’ ์žฌ์ •์˜ ๋ฐ getterํ•จ์ˆ˜ ์ •์˜

ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์ƒ์ˆ˜ ๊ฐ’์„ ์žฌ์ •์˜ ํ•œ ํ›„ getter ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด ๋ฆฌํ„ด ๊ฐ’์„ ์ƒˆ๋กœ ์ •์˜๋œ ์ƒ์ˆ˜ ๊ฐ’์œผ๋กœ ํ•ด์ค€๋‹ค.

์ƒ์ˆ˜ ๋ณ€๊ฒฝ ํ…Œ์ŠคํŠธ

ํ…Œ์ŠคํŠธํ•ด๋ณด๋ฉด ํ•˜์œ„ ํด๋ž˜์Šค์˜ ์ƒ์ˆ˜ ๊ฐ’์ด ์ž˜ ๋‚˜์˜ค๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•