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