ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA 25] 자바 ① 접근 제한자 ( Access Modifier ) (public / protected / default / private)
    Language/Java 2018. 2. 13. 20:52
    반응형


    1) 접근 제한자 ( Access Modifier )

    (1) public 

    접근제한이 없다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package modi.fier;
     
    public class AMS2{                    // public
        public String str = "BIT COIN";
     
        public AMS2(){
            System.out.println("생성자 AMS2");
        }
     
        public void m(){
            System.out.println("메소드 m");
        }
     
        public static void main(String[] args){
            AMS2 ams2 = new AMS2();
            System.out.println("ams2.str : " + ams2.str);
            ams2.m();
        }
    }
     
    cs



    public 이 붙은 클래스는 같거나 다른 패키지에 있는 

    접근 제한자가 같거나 다른 클래스가 자원들을 가지고 갈 수 있다.





    (2) protected

    같은 패키지 안이라면 접근이 가능하다.

    다른 패키지 의 상속관계 자식은 접근이 가능하다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package modi.fier;
     
    public class AMS3{            // Class ( 클래스 ) 에는 protected 가 불가능 하다.
        protected String str = "BIT COIN";
     
        protected AMS3(){
            System.out.println("생성자 AMS3");
        }
     
        protected void m(){
            System.out.println("메소드 m");
        }
     
        public static void main(String[] args){
            AMS3 ams3 = new AMS3();
            System.out.println("ams3.str : " + ams3.str);
            ams3.m();
        }
    }
     
    cs

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    package other.folder;   // (같은 폴더) 같은 패키지는 가능하다.
                            // (다른 폴더) 다른 패키지시에는 상속 관계만 가능하다.
    import modi.fier.AMS3;
     
    class AMSUser3 extends AMS3{ // public , default 가능하다.
     
        public static void main(String[] args){
            AMSUser3 ams3 = new AMSUser3();
            System.out.println("ams3.str : " + ams3.str);
            ams3.m();
        }
    }
    cs

    다른 패키지에 있더라도 , 

    상속 관계의 자식protect 접근 제한자가 붙은 부모의 자원들을 가지고 사용할 수 있다.





    (3) default

    같은 패키지 안에서 접근이 가능하다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    package modi.fier;
     
    class AMS1{                   // Access Modifier Study 1
        String str = "BIT COIN";  // default 는 접두사가 없는 것을 의미한다.
     
        AMS1(){
            System.out.println("생성자 AMS1");
        }
     
        void m(){
            System.out.println("메소드 m");
        }
     
        public static void main(String[] args){
            AMS1 ams1 = new AMS1();
            System.out.println("ams1.str : " + ams1.str);
            ams1.m();
        }
    }
    cs


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    package modi.fier; // 같은 패키지
     
    import modi.fier.AMS1;    // AMS1 을 가져오기 위해서 import 한다.
     
    class AMSUser1{
     
        AMSUser1(){ // AMS1 의 자원들을 이용하려 한다.
            AMS1 ams1 = new AMS1();
            System.out.println("ams1.str : " + ams1.str);
            ams1.m();
        }
     
        public static void main(String[] args){
            new AMSUser1();
        }
    }

    cs



    다른 패키지에서 접근시

    만약 다른 폴더 즉, 다른 패키지에서 접근을 하려 하면 에러가 나옵니다. 

    자세한 내용은 밑에 <상세 내용 보기>를 클릭해 주세요.




    (4) private

    자신의 클래스 안에서만 접근이 가능하다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package modi.fier;
     
    class AMS4{            // Class ( 클래스 ) 에는 private 가 불가능 하다.
        private String STR = "BIT COIN";    // 상수는 대문자로 표현한다.
     
        private AMS4(){
            System.out.println("생성자 AMS4");
        }
     
        private void m(){
            System.out.println("메소드 m");
        }
     
        public static void main(String[] args){
            AMS4 ams4 = new AMS4();
            System.out.println("ams4.STR : " + ams4.STR);
            ams4.m();
        }
    }
     
    cs



    다른 클래스에서 접근이 안된다.

    자세한 내용은 밑에 <자세한 내용 보기>를 클릭해 주세요.




    cf 1) 범위가 넓은 순서

    public > protected > default > private

    cf 2) 접근제한이 강력한 순서

    public < protected < default < private

    cf 3) class 앞에는 publicdefault 만 가능하다.


    반응형
Designed by Tistory.