Link
01-21 07:19
«   2021/01   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
Archives
Today
262
Total
1,290,298
관리 메뉴

꿈 많은 사람의 이야기

자바 접근 제한자(publlic, private, protected, default) 본문

java

자바 접근 제한자(publlic, private, protected, default)

이수진의 블로그 이수진의 블로그 2017. 8. 14. 08:51
반응형

라이브러리 클래스를 설계할 때에는 외부 클래스에서 접근할 수 있는 멤버와 접근 할 수 없는 멤버로 구분해서 필드, 생성자, 메소드를 설계하는 것이 바람직하다. 자바는 이러한 기능을 구현하기 위해 접근 제한자를 제공하고 있다.

접근 제한자는 public, protected, dafault, private와 같이 네 가지 종류가 있다. 각 특징은 밑의 표와 같다


클래스 내부
같은 패키지
서브 클래스
다른 패키지
public
o
o
o
o
protected
o
o
o
x
default
o
o
x
x
Private
o
x
x
x

말그대로 public은 다 접근 가능하고
protected는 다른 패키지에선 접근이 불가능하고
default는 서브(자식) 클래스와 다른 패키지에서 접근이 불가능하다.
하지만 만약 같은 패키지에서 상속관계이면 같은 패키지는 접근이 가능하기 때문에 사용할 수 있다.
private는 접근이 매우 까다로운 녀석이여서 클래스 내부에서뿐이 쓰지 못한다.

객체를 생성하기 위해서는 new 연산자로 생성자를 호출해야 한다. 하지만 생성자를 어디에서나 호출 할 수 있지 않다. 생성자가 어떤 접근 제한을 갖느냐에 따라 호출 여부가 달라지는데 생성자도 public, protected, default, private를 가질 수 있다.

public
모든 패키지에서 아무런 제한 없이 생성자를 호출한다. 단, 클래스가 default 접근 제한을 가진다면 클래스 사용이 같은 패키지로 한정되므로 같은 패키지에서만 생성자를 호출 할 수 있다.
protected
같은 패키지에 속하는 클래스에서 생성자를 호출한다. default와 다른 점은 다른 패키지에 속한 클래스가 해당 클래스의 자식 클래스라면 생성자를 호출 할 수 있다.
default
같은 패키지에선 아무런 제한 없이 생성자를 호출할 수 있으나, 다른 패키지에서는 생성자를 호출할 수 없도록 한다.
Private
동일 패키지이건 다른 패키지 이건 생성자를 호출하지 못하도록 제한


반응형

'java' 카테고리의 다른 글

자바 상속과 오버라이딩, super  (0) 2017.08.16
자바 get, set 메소드(getter, setter)  (0) 2017.08.14
자바 접근 제한자(publlic, private, protected, default)  (0) 2017.08.14
자바 import  (0) 2017.08.14
자바 싱글톤  (0) 2017.08.14
자바 정적 멤버, static  (0) 2017.08.10
0 Comments
댓글쓰기 폼