๐ ์๋ฐ ์ ๊ทผ ์ ์ด์
์๋ฐ๋ฅผ ๊ณต๋ถํ๋ค ๋ณด๋ฉด public, private, protected... ์ด๋ฐ ํค์๋๋ค์ด ๊ณ์ ๋์ค๋๋ฐ
์ ํํ ์ด๋๊น์ง ์ ๊ทผ์ด ๋๋ ๊ฑด์ง ํท๊ฐ๋ฆด ๋๊ฐ ์์ต๋๋ค. ์์ง ์๊ฒ ์ค๋ ํ๋ฒ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค โจ
๐คท ์ ๊ทผ ์ ์ด์๋?
์ ๊ทผ ์ ์ด์๋ ํด๋์ค๋ ํด๋์ค ๋ฉค๋ฒ(ํ๋, ๋ฉ์๋ ๋ฑ)์ "๋๊ฐ ์ ๊ทผํ ์ ์๋๊ฐ?" ๋ฅผ ์ ํด์ฃผ๋ ํค์๋์ ๋๋ค.
๐ค ์ฝ๊ฒ ์๊ฐํด๋ณด์๋ฉด,
๊ฑด๋ฌผ ์ถ์
์ฆ ๊ฐ์ ๊ฐ๋
์
๋๋ค.
๋ฑ๊ธ์ ๋ฐ๋ผ ๋ค์ด๊ฐ ์ ์๋ ๊ตฌ์ญ์ด ๋ฌ๋ผ์ง๋ ๊ฒ์ฒ๋ผ, ์ ๊ทผ ์ ์ด์๋ ๋ฑ๊ธ์ ๋ฐ๋ผ ์ ๊ทผ ๊ฐ๋ฅํ ๋ฒ์๊ฐ ๋ฌ๋ผ์ง๋๋ค.
๐ก๏ธ ์ ๊ทผ ์ ์ด์์ ์ข ๋ฅ
| ์ ๊ทผ ์ ์ด์ | ์ ๊ทผ ๊ฐ๋ฅ ๋ฒ์ |
|---|---|
private |
๊ฐ์ ํด๋์ค ๋ด๋ถ ์์๋ง ์ ๊ทผ ๊ฐ๋ฅ |
| (default) | ๊ฐ์ ํจํค์ง ์์ ์ ๊ทผ ๊ฐ๋ฅ (๋ณ๋ ํค์๋ ์์ด ์ ์ธ๋ ๊ฒฝ์ฐ) |
protected |
๊ฐ์ ํจํค์ง + ์์ ๊ด๊ณ์ ๋ค๋ฅธ ํจํค์ง ํด๋์ค ์์ ์ ๊ทผ ๊ฐ๋ฅ |
public |
์ด๋์๋ ์ ๊ทผ ๊ฐ๋ฅ |
โ ๏ธ default๋ ์๋ฌด ํค์๋๋ ๋ถ์ด์ง ์์ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ ์ฉ๋ฉ๋๋ค.
์ ์ ๋ช ์นญ์package-private์ ๋๋ค.
๐ ๋น๊ตํ๋ก ํ๋์ ๋ณด๊ธฐ
| ์ ๊ทผ ์ ์ด์ | ๊ฐ์ ํด๋์ค | ๊ฐ์ ํจํค์ง | ํ์ ํด๋์ค(๋ค๋ฅธ ํจํค์ง) | ์ ์ฒด |
|---|---|---|---|---|
private |
โ | โ | โ | โ |
default |
โ | โ | โ | โ |
protected |
โ | โ | โ | โ |
public |
โ | โ | โ | โ |
๐ ์๋ฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก "๊ฐ์ถ๋ ๊ฒ ๊ธฐ๋ณธ"์ ๋๋ค.
๊ผญ ๊ณต๊ฐํด์ผ ํ ๋ฉค๋ฒ์๋งpublic์ ๋ถ์ฌ์ฃผ์ธ์!
๐ฌ ์ค์ ์์ ๋ก ์ดํดํ๊ธฐ
ํด๋์ค ์ ์
public class Parent {
private String password = "๋๋ง ์๊ณ ์ถ์ด"; // private - ํด๋์ค ๋ด๋ถ๋ง
String teamCode = "๊ฐ์ ํจํค์ง๋ผ๋ฉด OK"; // default - ๊ฐ์ ํจํค์ง๊น์ง
protected String employeeId = "์์ ํด๋์ค์๊ฒ๋ง"; // protected - ์์ ๊ด๊ณ๊น์ง
public String name = "๋๊ตฌ๋ ํ์!"; // public - ์ ์ฒด ๊ณต๊ฐ
}
๊ฐ์ ํจํค์ง์์ ์ ๊ทผ
public class SamePackage {
public static void main(String[] args) {
Parent parent = new Parent();
// โ private โ ์ธ๋ถ์์ ์ง์ ์ ๊ทผ ๋ถ๊ฐ
// System.out.println(parent.password);
// โ
default โ ๊ฐ์ ํจํค์ง ์์์๋ ์ ๊ทผ ๊ฐ๋ฅ
System.out.println(parent.teamCode);
// โ
protected โ ๊ฐ์ ํจํค์ง or ์์ ๊ด๊ณ๋ผ๋ฉด OK
System.out.println(parent.employeeId);
// โ
public โ ๋๊ตฌ๋ ์ฌ์ฉ ๊ฐ๋ฅ
System.out.println(parent.name);
}
}
๋ค๋ฅธ ํจํค์ง์์ ์ ๊ทผ
public class DifferentPackage {
public static void main(String[] args) {
Parent parent = new Parent();
// โ private โ ๋ค๋ฅธ ํจํค์ง์์ ์ ๊ทผ ๋ถ๊ฐ
// System.out.println(parent.password);
// โ default โ ๋ค๋ฅธ ํจํค์ง์์๋ ์ ๊ทผ ๋ถ๊ฐ
// System.out.println(parent.teamCode);
// โ protected โ ์์ ๊ด๊ณ๊ฐ ์๋๋ฉด ์ ๊ทผ ๋ถ๊ฐ
// System.out.println(parent.employeeId);
// โ
public โ ์ด๋์๋ ์ ๊ทผ ๊ฐ๋ฅ!
System.out.println(parent.name);
}
}
๋ค๋ฅธ ํจํค์ง + ์์ ๊ด๊ณ์์ ์ ๊ทผ
public class Child extends Parent {
public void testInherited() {
// โ
protected โ ์์ ํด๋์ค ์์์๋ ๋ค๋ฅธ ํจํค์ง์ฌ๋ ์ ๊ทผ ๊ฐ๋ฅ
System.out.println(employeeId);
}
}
๐ซ ์ ๊ทผํ ์ ์๋ ๋ฉค๋ฒ์ ์ ๊ทผํ๋ฉด
๋ฐํ์์ด ์๋ ์ปดํ์ผ ๋จ๊ณ์์ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค! ๐ซ
๐ฏ ์ธ์ ์ด๋ค ์ ๊ทผ ์ ์ด์๋ฅผ ์ธ๊น?
๊ธฐ๋ณธ ์์น์ "์ต์ํ์ผ๋ก ๊ณต๊ฐํ๊ธฐ"์ ๋๋ค. ํ์ํ ๊ฒ๋ง ์ด์ด๋๋ ๊ฒ ์ข์ ์ค๊ณ์ ๋๋ค.
| ์ํฉ | ์ถ์ฒ ์ ๊ทผ์ | ์ด์ |
|---|---|---|
| ๋ด๋ถ์์๋ง ์ฐ๋ ํ๋๋ ๋ฉ์๋ | private |
์ธ๋ถ์ ๋ ธ์ถํ ํ์ ์์, ์บก์ํ ๋ชฉ์ |
| ๊ฐ์ ํจํค์ง ๋ด์์ ๊ณต์ ํ ๋ | (default) | ๊ฐ๋จํ ๋ชจ๋ ๊ตฌ์ฑ์ ์ ์ฉ |
| ์์๋ฐ์ ์์ ํด๋์ค๊น์ง ํ์ฉ | protected |
์์ ๊ด๊ณ์์ ์ ์ฐํ ๊ตฌ์กฐ |
| ์ด๋์๋ ํธ์ถ ๊ฐ๋ฅํด์ผ ํ ๋ | public |
๋ชจ๋ ํด๋์ค์ ์ ๊ทผ ํ์ฉ |
โ ๋ง๋ฌด๋ฆฌ
| ํค์๋ | ๊ณต๊ฐ ๋ฒ์ | ์์ฃผ ์ฐ์ด๋ ์ฉ๋ |
|---|---|---|
private |
ํด๋์ค ๋ด๋ถ | ํ๋, ํฌํผ ๋ฉ์๋ ๋ฑ ์จ๊ธธ ๋ |
| (default) | ๊ฐ์ ํจํค์ง | ๊ฐ๋จํ ํจํค์ง ๋จ์ ๊ตฌ์ฑ์ฉ |
protected |
๊ฐ์ ํจํค์ง + ๋ค๋ฅธ ํจํค์ง ์์ ํด๋์ค | ์์ ์ ๋ถ๋ชจ์ ๊ธฐ๋ฅ ๊ณต์ |
public |
์ด๋์๋ | ๋ผ์ด๋ธ๋ฌ๋ฆฌ, API, ์ง์ ์ (main) ๋ฑ ๊ณต๊ฐ |
'Programming > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Java์ ๋ฐ๋ณต๋ฌธ๊ณผ ํ๋ฆ ์ ์ด ํค์๋! (0) | 2025.04.23 |
|---|---|
| ์๋ฐ์ ๋ฐฐ์ด(Array) (0) | 2025.04.22 |
| ์๋ฐ ์ค์ฒฉ ํด๋์ค๋? (0) | 2025.04.14 |
| ์ํผํด๋์ค & ์๋ธํด๋์ค (์์) (0) | 2025.04.13 |
| ์๋ฐ์ย `this`ย &ย `super` (0) | 2025.04.12 |