자바

JAVA 자바 생성자의 접근 제한

알통몬_ 2017. 3. 12. 19:25
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

생성자 접근 제한

 객체를 생성하기 위해서는 new 연산자로 생성자를 호출해야 합니다. 

생성자를 어디에서나 호출할 수 있는 것은 아닙니다. 

생성자라 어떤 접근 제한을 갖느냐에 따라 호출 가능 여부가 결정됩니다.

생성자는 아래와 같이 public, protected, default, private 접근 제한을 가질 수 있습니다.

public class ClassName {

    //public 접근 제한

      public ClassName(...) { ... }

    //protected 접근 제한

      protected ClassName(...) { ... }

    //default 접근 제한

      ClassName(...) { ... }

    //private 접근 제한

      private ClassName(...) { ... }

}


클래스에 생성자를 선언하지 않았을 때 자동으로 선언되는 기본 생성자는 클래스와 같은 접근 제한을 가집니다.



예제1)

package constructor_access.package1;


public class A {

//필드

A a1 = new A(true);

A a2 = new A(1);

A a3 = new A("문자열");


//생성자

public A(boolean b) {}

A(int b) {}

private A(String s) {} 

}

 


예제2)

package constructor_access.package1;


public class B {

//필드

A a1 = new A(true);

A a2 = new A(1); A클래스와 같은 패키지이므로 default 생성자 호출가능.

//A a3 = new A("문자열"); //private 생성자이므로 접근 불가

 

}


예제3)

package constructor_access.package2;


import constructor_access.package1.A;


public class C {

  //필드

A a1 = new A(true);      

//A a2 = new A(1); //다른 패키지이므로 default 생성자 호출 불가.  

//A a3 = new A("문자열");  //private 생성자이므로 접근 불가

}

반응형