세로형
Recent Posts
Recent Comments
Link
03-28 00:38
«   2024/03   »
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
Total
관리 메뉴

꿈 많은 사람의 이야기

자바 접근 제한자(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
자바 import  (0) 2017.08.14
자바 싱글톤  (0) 2017.08.14
자바 정적 멤버, static  (0) 2017.08.10
Comments