-
μ κ·Όμ μ΄μ(access modifier)λ?κ°λ°/Java 2022. 2. 20. 22:36
μλ νμΈμ, λͺ½λ°λΈμ λλ€.
μ΄λ² μκ°μλ 'μ κ·Όμ μ΄μ(access modifier)'μ λν΄ μμλ³΄κ² μ΅λλ€.
μ²μ μλ°λ₯Ό λ°°μΈ λ, κ΅μ₯ν 볡μ‘νκ²λ§ λκ»΄μ‘λ κΈ°μ΅μ΄ λλ€μ.
μμ¦ κΈ°μ΄μ μννλ κ² κ°μμ, μ¬λ¬κ°μ§ κΈ°μ΄ κ°λ λ€μ λ€μ 보λ μ€μ μμ΅λλ€.
μμ μ΄λ° κΈ°μ΄μ μΈ κ°λ μ μ²μ 곡λΆν λ, μ λλ‘ μ‘μλλ κ²μ΄ μ’μ κ² κ°μ΅λλ€ :)
μ κ·Όμ μ΄μ(access modifier)λ
μ κ·Ό μ μ΄μ (access modifier)
μ κ·Ό μ μ΄μλ λ©€λ² λ³μ/ν¨μ νΉμ ν΄λμ€μ μ¬μ©λλ©° μΈλΆμμμ μ κ·Όμ μ ννλ μν- private : κ°μ ν΄λμ€ λ΄μμλ§ μ κ·Όμ΄ κ°λ₯ν©λλ€
- default(nothing) : κ°μ ν¨ν€μ§ λ΄μμλ§ μ κ·Όμ΄ κ°λ₯ν©λλ€.
- protected : κ°μ ν¨ν€μ§ λ΄μμ, κ·Έλ¦¬κ³ λ€λ₯Έ ν¨ν€μ§μ μμν΄λμ€μμ μ κ·Όμ΄ κ°λ₯ν©λλ€.
- public : μ κ·Ό μ νμ΄ μ ν μμ΅λλ€.μ κ·Ό λ²μ : (μ’μ) private → default → protected → public (λμ)
κ·ΈλΌ μμ λ‘ μμΈνκ² μμ보λλ‘ νκ² μ΅λλ€ :D
μμ νμΈ
ν¨ν€μ§ ꡬ쑰
λ¨Όμ , java ν΄λ μμ AcceccModifierλΌλ ν¨ν€μ§λ₯Ό λ§λ€μ΄μ, AcceccModifierTest.java ν΄λμ€νμΌμ λ§λ€μ΄ μ€λλ€. μ¬κΈ° ν΄λμ€ νμΌμλ ν μ€νΈλ₯Ό μν΄ private, public, protectedλ‘ κ°κ° μ μΈνμ¬ λ©μλλ₯Ό λ§λ€μ΄μ£Όκ² μ΅λλ€.
AccessModifierTest.java
package AccessModifier; public class AccessModifierTest { private void privateM() { System.out.println("private modifier"); } public void publicM() { System.out.println("public modifier"); privateM(); } protected void protectedM() { System.out.println("protected modifier"); } }
μ΄μ ν μ€νΈ μ§νμ μν΄ Main.javaλ‘ μ΄λνμ¬, λ€μκ³Ό κ°μ΄ μ½λλ₯Ό μ§κ² μ΅λλ€. λλΆλΆμ μ€λͺ μ μ£ΌμμΌλ‘ λ체νκ² μ΅λλ€. μ¬κΈ°μ Childλ protectedμ κ°λ μ μ€λͺ νκΈ° μν΄ AccessModifierTestλΌλ λΆλͺ¨ν΄λμ€λ‘λΆν° μμμ λ°κ² μ΅λλ€.
Main.java
import AccessModifier.AccessModifierTest; class Child extends AccessModifierTest { //void μμ μ무κ²λ μμΌλ©΄ defaultλ‘ κ°μ ν¨ν€μ§ λ΄μμλ§ μ κ·Όκ°λ₯. void callParentProtectedMethod() { System.out.println("Call my parent's protected method"); super.protectedM(); //superλ₯Ό ν΅ν΄ λΆλͺ¨μ λ©μλλ₯Ό νΈμΆν μ μλ€.-> protected : κ°μ ν¨ν€μ§ λ΄, λ€λ₯Έ ν¨ν€μ§μ μμν΄λ μ€μμλ§ } } public class Main { public static void main(String[] args) { AccessModifierTest accessModifierTest = new AccessModifierTest(); accessModifierTest.outsideM(); // accessModifierTest.insideM(); // compile error -> private : κ°μ ν΄λμ€ λ΄μμλ§ // accessModifierTest.protectedM(); // compile error -> protected : κ°μ ν¨ν€μ§ λ΄, λ€λ₯Έ ν¨ν€μ§μ μμν΄λ μ€μμλ§ Child child = new Child(); child.callParentProtectedMember(); } }
κ°λ¨ν κ°λ μ΄λΌ, μ£Όμ μ΄μΈμ ν¬κ² μ€λͺ ν λΆλΆμ μμ΅λλ€. μ½λλ₯Ό μ§μ μ μ΄λ³΄μκ³ μ»΄νμΌν΄λ³΄μλ©΄μ νμΈνλ©΄ μ’λ νμ΅νμλλ° λμμ΄ λ κ² κ°μ΅λλ€.
κ·Έλ λ€λ©΄, κ·Έλ₯ public λ€ μ μΈνκ³ νΈνκ² μ°λ©΄ μ’μν λ°, μ΄λ κ² λ³΅μ‘νκ²λ§ λκ»΄μ§λ μ κ·Όμ μ΄μλ₯Ό κ΅³μ΄ μ μ°λκ²μΌκΉμ?
μ κ·Όμ μ΄μλ₯Ό μ°λ μ΄μ
- κ°μ²΄λ€κ°μ κ΄κ³μ λ°λΌμ μ κ·Ό ν μ μλ κ²κ³Ό μλ κ², κΆνμ ꡬλΆνκΈ° μν΄
- ν΄λμ€ λ΄λΆμ μ μΈλ λ°μ΄ν°μ λΆμ μ ν μ¬μ©μΌλ‘λΆν° 보νΈνκΈ° μν΄ -> μΊ‘μν(encapsulation)κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ κ°μ²΄λ€ κ°μ μνΈμμ©μ μ½λλ‘ νννλ κ²μ λλ€. μ΄λ, κ°μ²΄λ€κ°μ κ΄κ³μ λ°λΌμ μ κ·Ό ν μ μλ κ²κ³Ό μλ κ²μ λν κΆνμ ꡬλΆν νμκ° μκΉλλ€. λν, ν΄λμ€ λ΄λΆμ μ μΈλ λ°μ΄ν°μ λΆμ μ ν μ¬μ©μΌλ‘λΆν° 보νΈνκΈ° μν¨μΈλ°μ, μ΄κ²μ 'μΊ‘μν(encapsulation)'μ΄λΌκ³ νμ£ . μ¦, μ κ·Όμ μ΄μλ μ΄λ¬ν μΊ‘μνκ° κ°λ₯νλλ‘ λμμ£Όλ λꡬλΌκ³ 보면 λκ² μ΅λλ€.
κ·ΈλΌ λ€μμ λ λ§λμ :)
'κ°λ° > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ€μ²©ν΄λμ€(Nested class)λ 무μμΈκ°? (0) 2022.04.07 μ°Έμ‘° μλ£ν - κΈ°λ³Έ μμ±μ, μ€λ²λ‘λ©(overloading), return (0) 2022.03.21 λ³μ μ΄μΌκΈ°(2) - μλ°μ νμ (μλ£ν) (1) 2022.03.17 λ³μ μ΄μΌκΈ°(1) - μλ°μ 4κ°μ§ λ³μ (1) 2022.03.17 Collection(1) - List, Set, Map (2) 2022.02.22