[Java]μ κ·Όμ νμ(Access Modifier) - (1)
π€μ κ·Όμ νμ(Access Modifier)
ν΄λμ€, νλ, μμ±μ, λ©μλ μμ±μ ν΄λμ€ μΈλΆμμμ μ κ·Όμ μ ννκΈ° μν΄ μ¬μ©νλ μ νμ
=> μ 보 μλ(data hiding)μ ν΅ν΄ μ¬μ©μκ° μ΅μνμ μ 보λ§μΌλ‘ νλ‘κ·Έλ¨μ μ¬μ©ν μ μκ² νκΈ° μν΄
=> μ’ λ₯ λ° νμ© λ²μ : public > protected > default > private
μ κ·Όμ μ΄μ | ν΄λμ€ λ΄λΆ | λμΌ ν¨ν€μ§ | μμλ°μ ν΄λμ€ (λ€λ₯Έ ν¨ν€μ§) |
μ΄μΈ λ€λ₯Έ ν¨ν€μ§ |
private | O | X | X | X |
default | O | O | X | X |
protected | O | O | O | X |
public | O | O | O | O |
β«private μ κ·Ό μ νμ
νλ, μμ±μ, λ©μλλ₯Ό ν΄λμ€ λ΄λΆμμλ§ μ¬μ© κ°λ₯νλλ‘ μ€μ νλ μ κ·Ό μ νμ - μλν
=> ν΄λμ€ μΈλΆμμ νλ, μμ±μ, λ©μλλ₯Ό μ¬μ©ν κ²½μ° μλ¬ λ°μ
μ€μ΅μμ π©π»
1) PrivateMember λΌλ ν΄λμ€ μμ private μ νμλ₯Ό μ¬μ©νμ¬ νλμ λ©μλ μμ±
package xyz.itwill.access;
public class PrivateMember {
private int number;
@SuppressWarnings("unused")
private void disply() {
System.out.println("number = "+number);
}
}
2) κ°μ ν¨ν€μ§ λ΄μμ PrivateMember κ°μ²΄λ₯Ό μμ±νμ¬ μ κ·Όνλ €κ³ μλν΄λ΄.
κ·Έλ¬λ©΄ μλμ κ°μ΄ μ€λ₯κ° λ°μ.
package xyz.itwill.access;
public class PrivateMemberUse {
public void run() {
@SuppressWarnings("unused")
PrivateMember member = new PrivateMember();
member.number=100;
member.display();
}
}
β« default μ κ·Ό μ νμ
ν΄λμ€, νλ, μμ±μ, λ©μλ μμ±μ μ κ·Ό μ νμ κ΄λ ¨ ν€μλλ₯Ό μ¬μ©νμ§ μμΌλ©΄ μλμΌλ‘ default μ κ·Ό μ νμλ‘ μ²λ¦¬
=> ν΄λμ€, νλ, μμ±μ, λ©μλλ₯Ό κ°μ ν¨ν€μ§μ ν΄λμ€μμλ§ μ¬μ© κ°λ₯νλλ‘ μ€μ νλ μ κ·Ό μ νμ
=> ν΄λμ€, νλ, μμ±μ, λ©μλλ₯Ό λ€λ₯Έ ν¨ν€μ§μ ν΄λμ€μμ μ¬μ©ν κ²½μ° μλ¬ λ°μ
μ€μ΅μμ π©π»
1) PackageMemberλΌλ ν΄λμ€ μμ μ νμ κ΄λ ¨ ν€μλλ₯Ό μ¬μ©νμ§ μκ³ νλμ λ©μλ μμ±
package xyz.itwill.access;
public class PackageMember {
int number;
void display() {
System.out.println("number = "+number);
}
}
2) κ°μ ν¨ν€μ§ λ΄μμ PackageMemberUseλΌλ μλ‘μ΄ ν΄λμ€μμ PackageMemberκ°μ²΄λ₯Ό μμ±νμ¬ μ κ·Όνλ €κ³ μλν΄λ΄. μλμ κ°μ΄ μλ¬κ° λμ§ μμ.
ν΄λμ€ μΈλΆμ΄κΈ΄ νμ§λ§, defaultμ νμλ₯Ό μ¬μ©νλ©΄ κ°μ ν¨ν€μ§ λ΄λΆμμλ μ κ·Ό κ°λ₯.
package xyz.itwill.access;
public class PackageMeberUse {
public void run() {
PackageMember member=new PackageMember();
member.number=100;
member.display();
}
}
3) μλλ λ€λ₯Έ ν¨ν€μ§μμ PackageMember ν΄λμ€λ₯Ό μμλ°μ κ²½μ°μ.
defaultμ νμλ₯Ό μ¬μ©νλ©΄ μμν΄λμ€μμλ λΆκ΅¬νκ³ λ€λ₯Έ ν¨ν€μ§μμλ μλ¬ λ°μ.
β« protected μ κ·Ό μ νμ
νλ, μμ±μ, λ©μλλ₯Ό κ°μ ν¨ν€μ§μ ν΄λμ€μμλ§ μ¬μ© κ°λ₯νλλ‘ μ€μ νλ μ κ·Ό μ νμ
=> νλ, μμ±μ, λ©μλλ₯Ό λ€λ₯Έ ν¨ν€μ§μ ν΄λμ€μμ μ¬μ©ν κ²½μ° μλ¬κ° λ°μνμ§λ§ ν΄λμ€λ₯Ό μμλ°μ κ²½μ° μ¬μ© κ°λ₯
μ€μ΅μμ π©π»
1) ProtectedMemberλΌλ ν΄λμ€ μμ Protected μ νμ ν€μλλ₯Ό μ¬μ©νμ¬ νλμ λ©μλ μμ±
package xyz.itwill.access;
public class ProtectedMember {
protected int number;
protected void display() {
System.out.println("number = "+number);
}
}
2) λ€λ₯Έ ν¨ν€μ§μμ ProtectedMemberκ°μ²΄λ₯Ό μμ±νμ¬ νλμ λ©μλλ₯Ό μ¬μ©ν΄λ³΄λ €κ³ νλ μλ¬ λ°μ
3) κ·Έλ¬λ λ€λ₯Έ ν¨ν€μ§μ¬λ ProtectedMember ν΄λμ€λ₯Ό μμλ°μΌλ©΄ νλμ λ©μλ μ¬μ© κ°λ₯
β« public μ κ·Ό μ νμ
ν΄λμ€, νλ, μμ±μ, λ©μλλ₯Ό κ°μ ν¨ν€μ§ λ° λ€λ₯Έ ν¨ν€μ§μ μΈλΆ ν΄λμ€μμ μ¬μ© κ°λ₯νλλ‘ μ€μ νλ μ κ·Ό μ νμ
=> μμ€νμΌμλ λ€μμ Java μλ£ν(ν΄λμ€, μΈν°νμ΄μ€, μ΄κ±°ν) μ μΈ κ°λ₯ - λΉκΆμ₯
=> μμ€νμΌμλ public μ νμλ‘ μ μΈλ ν΄λμ€λ₯Ό νλλ§ μμ± κ°λ₯
=> public μ νμλ₯Ό μ¬μ©ν Java μλ£νμ μ΄λ¦μΌλ‘ μμ€νμΌλͺ
μ μ μ₯
μ€μ΅μμ π©π»
1) PublicMemberλΌλ ν΄λμ€ μμ Public μ νμ ν€μλλ₯Ό μ¬μ©νμ¬ νλμ λ©μλ μμ±
package xyz.itwill.access;
public class PublicMember {
public int number;
public void display() {
System.out.println("number = "+number);
}
}
2) μλμ κ°μ΄ κ°μ ν¨ν€μ§μ λ€λ₯Έ ν΄λμ€, λ€λ₯Έ ν¨ν€μ§μμ λͺ¨λ μ κ·Ό κ°λ₯