λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Programming/Java

14 Encapsulation (feat. Access modifier)

by Dowon Kang 2024. 1. 20.

μΊ‘μŠν™”(Encapsulation)λŠ” κ°μ²΄ μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)의 ν•œ μ›μΉ™μœΌλ‘œ, λ°μ΄ν„°μ™€ κ·Έ λ°μ΄ν„°λ₯Ό μ²˜λ¦¬ν•˜λŠ” λ©”μ„œλ“œ(ν•¨μˆ˜)λ₯Ό ν•˜λ‚˜μ˜ λ‹¨μΌ λ‹¨μœ„λ‘œ λ¬ΆλŠ” κ²ƒμ„ μ˜λ―Έν•©λ‹ˆλ‹€. μ΄λŠ” μ •λ³΄ μ€λ‹‰(Information Hiding)이라고도 λΆˆλ¦½λ‹ˆλ‹€. 

 

μΊ‘μŠν™”λŠ” ν”„λ‘œκ·Έλž¨μ˜ λͺ¨λ“ˆμ„±μ„ λ†’이고, μ½”λ“œλ₯Ό λ” μž¬μ‚¬μš© κ°€λŠ₯ν•˜κ²Œ λ§Œλ“€λ©°, μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€.

 

μΊ‘μŠν™”μ˜ ν•΅μ‹¬ μ•„μ΄λ””μ–΄λŠ” κ΄€λ ¨ μžˆλŠ” λ°μ΄ν„°μ™€ κ·Έ λ°μ΄ν„°λ₯Ό μ‘°μž‘ν•˜λŠ” ν•¨μˆ˜λ₯Ό ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ λ¬Άμ–΄ μ™ΈλΆ€μ—μ„œ μ§μ ‘ μ ‘κ·Όν•˜μ§€ λͺ»ν•˜κ²Œ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λŒ€μ‹ , κ°μ²΄μ˜ λ©”μ„œλ“œλ₯Ό ν†΅ν•΄μ„œλ§Œ λ°μ΄ν„°μ— μ ‘κ·Όν•˜κ³  μ‘°μž‘ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€. μ΄λ₯Ό ν†΅ν•΄ κ°μ²΄ λ‚΄λΆ€μ˜ κ΅¬ν˜„ μ„ΈλΆ€μ‚¬ν•­μ„ κ°μΆ”κ³ , μ™ΈλΆ€μ—μ„œλŠ” μ˜€μ§ κ³΅κ°œλœ λ©”μ„œλ“œλ₯Ό ν†΅ν•΄μ„œλ§Œ κ°μ²΄μ™€ μƒν˜Έμž‘μš©ν•  μˆ˜ μžˆκ²Œ λ©λ‹ˆλ‹€.

 

 


 

 

μ ‘κ·Ό μ œμ–΄μž(Access Modifiers)

μ ‘κ·Ό μ œμ–΄μž(Access Modifiers)λŠ” 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 클래슀의 멀버(λ³€μˆ˜, λ©”μ„œλ“œ)에 λŒ€ν•œ μ ‘κ·Ό κΆŒν•œμ„ μ œμ–΄ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” ν‚€μ›Œλ“œμž…λ‹ˆλ‹€. μ ‘κ·Ό μ œμ–΄μžλŠ” 클래슀의 μΊ‘μŠν™”μ™€ 정보 은닉을 κ°•ν™”ν•˜κ³ , μ½”λ“œμ˜ μ•ˆμ •μ„±κ³Ό μœ μ§€λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚€λŠ”λ° 도움을 μ€λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ 이 κ°œλ…μ„ μ§€μ›ν•˜λ©°, 주둜 λ‹€μŒκ³Ό 같은 λ„€ 가지 μ’…λ₯˜μ˜ μ ‘κ·Ό μ œμ–΄μžκ°€ μ‚¬μš©λ©λ‹ˆλ‹€.

       μ ‘κ·Ό μ œμ–΄μž
    같은 클래슀


   κ°™μ€ νŒ¨ν‚€μ§€ 


    μžμ‹ 클래슀

   μ „체 
        public             O            O            O     O
      protected             O            O            O     X (λ‹€λ₯Έ νŒ¨ν‚€μ§€λ©΄ 상속 관계일 λ•Œλ§Œ)
        default             O            O              X     X
        private             O            X            X     X

 

μ ‘κ·Όμ œμ–΄μž μ½”λ“œ μ˜ˆμ‹œ

캑슐 Classμ—μ„œ private, default, protected, public λ³€μˆ˜λ₯Ό μ„ μ–Έ 및 μ΄ˆκΈ°ν™”

더보기

package Chapter05;

 

public class Capsule {
    private int prv; // Same class
    int dft; // (default) Same package
    protected int prt = 77; // Same package + child class (other package)
    public int pub = 99; // Unrestricted

}

 

 

같은 클래슀의 main λ©”μ„œλ“œμ—μ„œλŠ” private μ œμ™Έ λͺ¨λ‘ μ ‘κ·Ό κ°€λŠ₯

더보기

package Chapter05;

class AccessModifier {
    public static void main(String[] args) {

        Capsule p = new Capsule();

     // System.out.println(p.prv); private
        System.out.println(p.dft); // default
        System.out.println(p.prt); // protected
        System.out.println(p.pub); // public

    }
}

 

 

λ‹€λ₯Έ ν΄λž˜μŠ€μ—μ„œλŠ” protected, public만 μ ‘κ·Ό κ°€λŠ₯ (μžμ‹μœΌλ‘œ μƒμ†λœ μƒνƒœμ—μ„œλ§Œ)

더보기

package Chapter06;

import Chapter05.Capsule;

  class Protected_Ex extends Capsule {
    public void printMember() {
     // System.out.println(prv); // X
     // System.out.println(dft); // X
        System.out.println(prt); // 77
        System.out.println(pub); // 99
    }
}

 

 

λ‹€λ₯Έ 클래슀의 λ©”μ„œλ“œμ—μ„œ Capsule μΈμŠ€ν„΄μŠ€λ₯Ό ν˜ΈμΆœν•  경우 public만 μ ‘κ·Ό κ°€λŠ₯ (상속이 μ•„λ‹ˆλΌμ„œ protectedλŠ” X)

더보기

package Chapter06;

public class AccessModifier2 {
    public static void main(String[] args) {
        Capsule c = new Capsule();
        // System.out.println(c.prv); // X
        // System.out.println(c.dft); // X
        // System.out.println(c.prt); // 77
        System.out.println(c.pub); // 99
    }
}

 

 

 


Encapsulation allows you to hide specific information and control access to the object’s internal state.

 

Access modifiers are used to control the accessibility or visibility of various elements within a program, which classifies private, default, protected and public.

 

'Programming > Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

16 Composition relationship  (0) 2024.01.20
15 Inheritance  (0) 2024.01.20
13 Method  (0) 2024.01.20
12 Constructor  (0) 2024.01.19
11 Class intro - feat. Field (Member variable)  (0) 2024.01.19

λŒ“κΈ€