2025. 7. 2. 16:05ใ๐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด/JAVA
๐ Java์ protected๋ ์ ํ์ํ ๊น?
"public๋ ์๋๋ฐ ์ ๊ตณ์ด protected๋ฅผ ์ธ๊น?"
โจ ์ด๋ฐ ๊ณ ๋ฏผ, ํด๋ณด์ จ๋์?
“protected๋ ๊ฐ๋ ์ ์๊ฒ ๋๋ฐ, ์ค์ ๋ก ์ ์ฐ๋์ง ๋ชจ๋ฅด๊ฒ ์ด์.”
“public์ด๋ฉด ๋ค ๋๋ ๊ฑฐ ์๋๊ฐ์?”
“๋ฉด์ ์์ ์ ๊ทผ์ ์ด์ ์ฐจ์ด์ ์ ๋งํ ์ ์์ง๋ง, ์ค๊ณ ๊ด์ ์์ ์ ์ฐ๋์ง๋ ์ ๋งคํด์…”
๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ์ด๋ ๊ฒ '์ด๋ก ์ ์๋๋ฐ, ์ค๊ณ์์ ์ ๊ทธ๋ ๊ฒ ์จ์ผ ํ๋์ง' ๊ณ ๋ฏผ์ด ์๊ธฐ์ฃ .
์ด ๊ธ์์๋ protected์ ์ค์ ์ฌ์ฉ ๋ชฉ์ ๊ณผ ์ค๊ณ ์ด์ ๋ฅผ, ๊ฐ๋ฐ์์ ๋ฉด์ ๊ด ๊ด์ ๋ชจ๋์์ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ ๋ฆฌํด๋ด
๋๋ค.
๐ ๊ฐ๋ ์ ๋ฆฌ: ์ ๊ทผ์ ์ด์์ ๋น๊ต
์ ๊ทผ ์ ์ด์ ๊ฐ์ ํด๋์ค ๊ฐ์ ํจํค์ง ํ์ ํด๋์ค ๋ค๋ฅธ ํจํค์ง
private | โ | โ | โ | โ |
(default) | โ | โ | โ | โ |
protected | โ | โ | โ | โ |
public | โ | โ | โ | โ |
- protected: ํจํค์ง ๋ด๋ถ + ํ์ ํด๋์ค์์๋ ์ ๊ทผ ๊ฐ๋ฅ
- public: ๋ชจ๋ ๊ณณ์์ ์ ๊ทผ ๊ฐ๋ฅ
๐จ๐ป ๊ฐ๋ฐ์ ์ ์ฅ: ์ธ์ protected๋ฅผ ์จ์ผ ํ ๊น?
โ 1. ์์์ ํตํ ํ์ฅ๋ง ํ์ฉํ๊ณ ์ถ์ ๋
public abstract class Animal {
protected void breathe() {
System.out.println("์จ์ ์ฐ๋ค");
}
}
- Animal์ ์์ํ Dog, Cat ํด๋์ค์์๋ breathe() ์ฌ์ฉ ๊ฐ๋ฅ
- ์ธ๋ถ์์ animal.breathe()๋ ๋ถ๊ฐ๋ฅ
๐ ๋ด๋ถ ๊ตฌํ์ ์จ๊ธฐ๋ฉด์, ์์ ํด๋์ค์๊ฒ๋ง ์ด์ด์ฃผ๋ “ํ์ฅ ํฌ์ธํธ”
โ 2. ํ๋ ์์ํฌ/๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์๋๋ ํ์ฅ์ ์ค๊ณํ ๋
public abstract class BaseController {
protected void validate() {
// ๊ธฐ๋ณธ ๊ฒ์ฆ ๋ก์ง
}
}
- ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๋ค์ด extends BaseControllerํด์ validate()๋ฅผ ์ฌ์ฌ์ฉ
- ๋จ, ์ผ๋ฐ ์ฌ์ฉ์๋ BaseController์ ๋ด๋ถ ๊ตฌํ์ ์ ๊ทผ ๋ถ๊ฐ
๐ Spring, JPA, Hibernate ๋ฑ ๋ํ ํ๋ ์์ํฌ ์์ค์ protected ๋ง์ด ์ฌ์ฉ
๐งโ๏ธ ๋ฉด์ ๊ด ์ ์ฅ์์ ๋ณด๋ ํฌ์ธํธ
๐ฌ ๋ฉด์ ์ง๋ฌธ ์์
"Java์ protected๋ ์ธ์ ์ฌ์ฉํด์ผ ํ๋์?"
"์ ๊ทผ์ ์ด์๋ฅผ public์ด ์๋๋ผ protected๋ก ์ฐ๋ ์ด์ ๊ฐ ๋ญ์ฃ ?"
โ ์ข์ ๋ต๋ณ ์์
"protected๋ ์ฃผ๋ก ์์์ ํตํด ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๋๋ก ํ๋ฉด์,
๋ถํ์ํ ์ธ๋ถ ์ ๊ทผ์ ์ ํํ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด ํ ํ๋ฆฟ ๋ฉ์๋ ํจํด์ฒ๋ผ ํน์ ๋ฉ์๋๋ ์์ ํด๋์ค๋ง ์ฌ์ ์ํ ์ ์๋๋ก ์ค๊ณํ ๋ ์ ์ฉํฉ๋๋ค."
โ ํ๋์ ์ ๋ฆฌ
์ํฉ ์ ์ ํ ์ ๊ทผ์ ์ด์
๋ด๋ถ์์๋ง ์ฐ์ | private |
ํจํค์ง ์์์๋ง ๊ณต์ | (default) |
์์ ํด๋์ค์๋ง ๊ณต์ | protected |
์ด๋์๋ ๊ณต์ ๊ฐ๋ฅ | public |
โ๏ธ ๋ง๋ฌด๋ฆฌ
Java์์ protected๋ ๋จ์ํ "์ ๊ทผ ๊ฐ๋ฅ ์ฌ๋ถ"๋ฅผ ๋์ด์
"์ด ๊ธฐ๋ฅ์ ๋๊ฐ ์์ํด์ ํ์ฅํ ๋ ์จ๋ ๋์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก๋ ๊ฑด๋ค์ง ๋ง"
๋ผ๋ ์ค๊ณ์์ ์๋์ ์ฑ
์ ๋ฒ์๋ฅผ ๋ด๊ณ ์๋ ํค์๋์
๋๋ค.
์ฝ๋๋ฅผ ์์ ํ๊ฒ ์ค๊ณํ๊ณ , ๋ณ๊ฒฝ์ ๊ฐํ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๊ผญ ํ์ํ ๊ฐ๋ ์ด์ฃ .
'๐ ๊ฐ๋ฐ ยท ํ๋ก๊ทธ๋๋ฐ > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA #42 (0) | 2020.04.21 |
---|---|
JAVA ์์ (0) | 2020.04.21 |
JAVA #40 (0) | 2020.03.31 |
JAVA #39 (0) | 2020.03.31 |
JAVA #38 (0) | 2020.03.31 |