on
접근제한자
접근제한자
외부 클래스에서 이용할 목적으로 설계된 라이브러리 클래스를 설계할 때는 외부클래스에서 접근할 수 있는 멤버와 접근할 수 없는 멤버로 구분해서 필드, 생성자, 메소드를 설계하는 것이 바람직하다.
객체 생성을 막기위해 생성자 호출을 막거나 객체의 데이터를 보호하기 위해 해당 필드에 접근하지 못하도록 막거나 특정 메소드를 호출할 수 없도록 제한할 필요가 있다. 자바는 이러한 기능을 구현하기 휘애 접근제한자(Access Modifier)를 제공하고 있다.
접근제한자는 public, protected, default, private 네 가지 종류가 있다.
public : 외부 클래스가 자유롭게 사용할 수 있는 공개 멤버를 만든다.
protected : 같은 패키지 또는 자식 클래스에서 사용할 수 있는 멤버를 만든다.
private : 외부에 노출되지 않는 멤버를 만든다.
default : 접근제한자를 지정하지 않으면 자동으로 적용되는 접근제한자이고, 같은 패키지에 소속된 클래스에서만 사용할 수 있는 멤버를 만든다.
접근제한 적용 대상 접근할 수 없는 클래스 public 클래스, 필드, 생성자, 메소드 없음 protected 필드, 생성자, 메소드 자식 클래스가 아닌 다른 패키지에 소속된 클래스 default 클래스, 필드, 생성자, 메소드 다른 패키지에 소속된 클래스 private 필드, 생성자, 메소드 모든 외부 클래스
클래스 접근제한
default : 클래스가 default 접근 제한을 가지게 되면 같은 패키지에서는 아무런 제한 없이 사용할 수 있지만 다른 패키지에서는 사용할 수 없도록 제한된다.
public : 클래스가 public 접근 제한을 가지게 되면 같은 패키지뿐만 아니라 다른 패키지에서도 아무런 제한 없이 사용할 수 있다.
생성자 접근제한
public : 클래스가 default 접근 제한을 가진다면 클래스 사용이 같은 패키지로 한정되므로, 비록 생성자가 public 접근 제한을 가지더라도 같은 패키지에서만 생성자를 호출할 수 있다.
private : 외부에서 생성자를 호출할 수 없도록 제한한다. 따라서 외부에서 new연산자로 객체를 만들 수 없다. 클래스 내부에서만 생성자를 호출하여 객체를 만들 수 있다.
from http://fun-developer.tistory.com/74 by ccl(A) rewrite - 2021-11-09 21:28:10