ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • μ ‘κ·Όμ œμ–΄μž(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)'이라고 ν•˜μ£ . 즉, μ ‘κ·Όμ œμ–΄μžλŠ” μ΄λŸ¬ν•œ μΊ‘μŠν™”κ°€ κ°€λŠ₯ν•˜λ„λ‘ λ„μ™€μ£ΌλŠ” 도ꡬ라고 보면 λ˜κ² μŠ΅λ‹ˆλ‹€.

     

     

    그럼 λ‹€μŒμ— 또 λ§Œλ‚˜μš” :)

     

     

     

     

     

    λŒ“κΈ€

Designed by Tistory.