์ ๊ทผ์ ์ด์ (Access Modifiers)
ํด๋์ค, ๋ฉ์๋, ๋ณ์ ๋ฑ์ ๋ํ ์ ๊ทผ ๊ถํ์ ์ค์ ํ๋๋ฐ ์ฌ์ฉ
ํด๋์ค ์ธ๋ถ์์ ํด๋น ๋ฉค๋ฒ์ ์ ๊ทผํ ์ ์๋ ๋ฒ์๋ฅผ ์ ํํ๊ฑฐ๋ ํ์ฉ
Java์ ์ ๊ทผ์ ์ด์๋ public, protected, default, private 4๊ฐ์ง ์ข
๋ฅ๊ฐ ์๋ค
public
public์ด ์ง์ ๋ ํด๋์ค, ๋ฉ์๋, ๋ณ์๋ ์ด๋์๋ ์ ๊ทผ ๊ฐ๋ฅ
๋ค๋ฅธ ํจํค์ง์ ์๋ ํด๋์ค์์๋ ์ ๊ทผ ๊ฐ๋ฅ
์ฃผ๋ก ๋ค๋ฅธ ํด๋์ค๋ ํจํค์ง์์ ์ฌ์ฉํ ํ์๊ฐ ์๋ API๋ ์ ํธ๋ฆฌํฐ ํด๋์ค์ ๋ฉ์๋์ ์ฌ์ฉ
public class MyClass {
public int publicVariable;
public void publicMethod() {
System.out.println("This is a public method.");
}
}
protected
protected๊ฐ ์ง์ ๋ ๋ฉค๋ฒ๋ ๊ฐ์ ํจํค์ง ๋ด ์์, ๋ค๋ฅธ ํจํค์ง์ ์๋ ํ์ ํด๋์ค์์๋ ์ ๊ทผ ๊ฐ๋ฅ
์์๊ด๊ณ์์๋ง ์ ๊ทผ ๊ถํ ๋ถ์ฌ
์์๋ฐ์ ํด๋์ค์์๋ง ์ฌ์ฉํ ํ์๊ฐ ์๋ ๋ฉ์๋๋ ๋ณ์๋ฅผ ๋ณดํธํ๊ณ ์ ํ ๋ ์ฌ์ฉ
public class MyClass {
protected int protectedVariable;
protected void protectedMethod() {
System.out.println("This is a protected method.");
}
}
default
default๋ ์ ๊ทผ์ ์ด์๋ฅผ ๋ช
์ํ์ง ์์ ๊ฒฝ์ฐ
ํด๋น ๋ฉค๋ฒ๋ ๊ฐ์ ํจํค์ง ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ , ๋ค๋ฅธ ํจํค์ง์์๋ ์ ๊ทผ ๋ถ๊ฐ๋ฅ (package-private)
๊ฐ์ ํจํค์ง ๋ด์์๋ง ์ฌ์ฉํ๊ณ ์ธ๋ถ์๋ ๋
ธ์ถํ๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ ์ฌ์ฉ
class MyClass {
int defaultVariable;
void defaultMethod() {
System.out.println("This is a default method.");
}
}
private
private๊ฐ ์ง์ ๋ ๋ฉค๋ฒ๋ ํด๋น ํด๋์ค ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
ํด๋์ค ์ธ๋ถ์์๋ ์ ๊ทผ ๋ถ๊ฐ๋ฅ, ๊ฐ์ ํจํค์ง์ ๋ค๋ฅธ ํด๋์ค์์๋ ์ ๊ทผ ๋ถ๊ฐ๋ฅ
ํด๋์ค ๋ด๋ถ์์๋ง ์ฌ์ฉํด์ผ ํ๋ ์ค์ํ ๋ฐ์ดํฐ๋ ๋ฉ์๋์ ์ฌ์ฉ
๊ฐ์ฒด์ ์ํ๋ฅผ ์์ ํ๊ฒ ๋ณดํธํ๊ธฐ ์ํด private ๋ณ์๋ฅผ ์ฌ์ฉํ๊ณ , ์ด์ ์ ๊ทผํ๊ธฐ ์ํด getter ์ setter ๋ฉ์๋๋ฅผ ์ ๊ณต
public class MyClass {
private int privateVariable;
private void privateMethod() {
System.out.println("This is a private method.");
}
public int getPrivateVariable() {
return privateVariable;
}
public void setPrivateVariable(int privateVariable) {
this.privateVariable = privateVariable;
}
}
์ ๋ฆฌ
์ ๊ทผ ์ ์ด์๋ ํด๋์ค ์ค๊ณ ์ ์ค์ํ ์ญํ
ํด๋์ค์ ๋ฉค๋ฒ๋ค์ ์ ๊ทผ ๋ฒ์๋ฅผ ์ ์ดํ์ฌ ์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ๋ช
ํํ ํ๊ณ ์บก์ํ ๋ฅผ ํ์ฌ ์ ์ง๋ณด์์ฑ ํฅ์ ์ํด
์ ๊ทผ์ ์ด์
๊ฐ์ ํด๋์ค
๊ฐ์ ํจํค์ง
ํ์ ํด๋์ค
๋ค๋ฅธ ํจํค์ง
public
O
O
O
O
protected
O
O
O
X
default
O
O
X
X
private
O
X
X
X