[JAVA] μΊ‘μŠν™”(Encapsulation)λž€?


Contents




μΊ‘μŠν™”λž€?

일반적으둜 λ³€μˆ˜μ™€ 클래슀λ₯Ό ν•˜λ‚˜λ‘œ λ¬ΆλŠ” μž‘μ—…μ„ μ˜λ―Έν•œλ‹€.

μΊ‘μŠν™”λŠ” μ€‘μš”ν•œ 데이터λ₯Ό 보쑴, λ³΄ν˜Έν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€.

즉, ν΄λž˜μŠ€μ— λ‹΄λŠ” λ‚΄μš© 쀑 μ€‘μš”ν•œ λ°μ΄ν„°λ‚˜ κΈ°λŠ₯을 μ™ΈλΆ€μ—μ„œ 직접 μ ‘κ·Όν•˜μ§€ λͺ»ν•˜λ„둝 μ‚¬μš©ν•˜λŠ” 것이닀.

  • privateλ©€λ²„λŠ” μ™ΈλΆ€μ—μ„œ 값을 μ§μ ‘μ μœΌλ‘œ λŒ€μž…μ‹œν‚¬ 수 μ—†κ³  객체가 μ œκ³΅ν•˜λŠ” ν•„λ“œμ™€ λ©”μ†Œλ“œλ₯Ό ν†΅ν•΄μ„œλ§Œ 접근이 κ°€λŠ₯ν•˜λ‹€.
  • private λ³€μˆ˜μ— 값을 λŒ€μž…ν•˜κΈ° μœ„ν•΄μ„œλŠ” public으둜 μ œκ³΅λ˜λŠ” set, get ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.
  • set ν•¨μˆ˜μ—μ„œλŠ” private 멀버에 μ œμ•½μ‘°κ±΄μ„ κ±Έμ–΄μ„œ 예기치 μ•Šμ€ 값에 λŒ€ν•΄ 문제λ₯Ό λ°©μ§€ν•  수 μžˆλ‹€.

μΊ‘μŠν™”λŠ” μ ‘κ·Όμ œμ–΄μžλ₯Ό 톡해 이루어진닀.

객체가 κ°–κ³  μžˆλŠ” λ‚΄λΆ€ λ°μ΄ν„°λŠ” μˆ¨κΈ°λŠ” 것이 κ·œμΉ™μ΄λ‹€. ν•˜μ§€λ§Œ 이 κ·œμΉ™μ„ 어겨도 μ—λŸ¬κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.

// Info class
Class Info() {
    String name;
}

...

// main method
public static void main(String[] args) {
    Info i = new Info();

    // λ‚΄λΆ€ 데이터λ₯Ό μ™ΈλΆ€μ—μ„œ μˆ˜μ •, but 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠμŒ
    i.name = "홍길동";
}



μΊ‘μŠν™” 방법

  1. 멀버 λ³€μˆ˜ μ•žμ— μ ‘κ·Όμ œν•œμž privateλ₯Ό 뢙인닀.
     public class Test {
         private int score;
     }
    
  2. ν•΄λ‹Ή 멀버 λ³€μˆ˜μ— 값을 μ„€μ •ν•˜κ³  κΊΌλ‚΄μ˜¬ 수 μžˆλŠ” λ©”μ†Œλ“œλ₯Ό λ§Œλ“ λ‹€.(setter / getter)
    • getter : 멀버 ν•„λ“œμ˜ 값을 λ°˜ν™˜ν•˜λŠ” 멀버 λ©”μ†Œλ“œ
    • setter : 멀버 ν•„λ“œμ˜ 값을 μ„€μ •ν•˜λŠ” 멀버 λ©”μ†Œλ“œ
     public class Test {
         private int score;
    
         void setScore(int n) {
             score = n;
         }
    
         int getScore() { 
             return score;
         }
     }
    
  • μ‹€ν–‰
public static void main(String[] args) {
    // private 멀버가 μ‘΄μž¬ν•˜λŠ” Test 객체 생성 & μ΄ˆκΈ°ν™”
    Test t = new Test();

    // Test의 score은 직접 접근이 λΆˆκ°€λŠ₯ν•¨μœΌλ‘œ μ—λŸ¬ λ°œμƒ
    t.score = 100;

    // setter λ©”μ†Œλ“œλ₯Ό 톡해 값을 μ„€μ •ν•œλ‹€.
    t.setScore(100);

    System.out.println(t.getScore);
}

// μ‹€ν–‰ κ²°κ³Ό =========
// 100