💡 접근 제한자의 종류
Public, Protected, Default, Private
Public
는 공개한다는 의미로 외부 클래스가 자유롭게 사용할 수 있는 공개 맴버를 만든다.
Protected
는 같은 패키지 또는 자식 클래서에서 사용할 수 있는 맴버를 만든다.
Private
는 개인적인 이라는 의미로 외부에 노출되지 않는 맴버를 만든다.
Default
는 접근 제한자는 같은 페키지에 소속된 클래스에서만 사용할 수있는 맴버를 만든다.
접근 제한 | 적용 대상 | 접근할 수 없는 클래스 |
---|---|---|
Public | 클래스, 필드, 생성자,메소드 | 없음 |
Protected | 필드, 생성자, 메소드 | 자식 클래스가 아닌 다른 패키지에 소속된 클래스 |
Default | 클래스, 필드, 생성자,메소드 | 다른 패키지에 소속된 클래스 |
Private | 필드, 생성자, 메소드 | 모든 외부 클래스 |
같은 패키지에서는 아무런 제한 없이 사용 가능하지만 다른패키지에서는사용 할 수 없음
Class 클래스 { ... }
같은 패키지 뿐만아니라 다른 패키지에서도 접근 가능
Public Class 클래스 { .... }
객체를 생성하기 위해선 new 연산자로 생성자를 호출해야 한다 하지만 생성자 또한 어디에선 호출할 수 있는 것이 아니기에 접근 제한을 통해 호출 가능 여부를 결정할 수 있다
public class Classname { Public ClassName() { } protected ClassName() { } ClassName() { } Private ClassName() { } }
동일 패키지이건 다른 패키지이건 상관없이 생성자를 호출하지 못하도록 제한한다.
따라서 클래서 외부에서 new 연산자로 객체를 만들 수 없고 크래서 내부에서만 생성자 호출과 객체 생성이 가능하다