JAVA/JAVA2

[java2] #01 - public, protected, private, default (접근제어자)

yoonddo 2022. 7. 6. 17:36

접근제어자

 - 접근제어자는 멤버변수, 클래스, 메소드, 생성자에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 한다.

 - 접근제어자는 생략 가능하고 생략했을때는 자동으로 default임을 의미한다.

  1. public : 접근 제한이 전혀 없다. 파일 하나에 한 개의 public class만 사용할 수 있다.
  2. protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근 가능하다.
  3. default : 같은 패키지 내에서만 접근 가능하다.
  4. private : 같은 클래스 내에서만 접근 가능하다.
접근자 같은 클래스 같은 패키지 자손 클래스 이외 영역
public O O O O
protected O O O X
default O O X X
private O X X X

접근제어자 사용 예시

 


대상에 따라 사용할 수 있는 제어자

대상 사용 가능한 접근 제어자 
클래스 public, (default), final, abstract
메소드 모든 접근제어자, final, abstract, static
멤버변수 모든 접근제어자, final, static
지역변수 final

제어자 조합해서 사용할 때 주의사항

1) 메소드에 staticabstract를 함께 사용할 수 없다.

: static 메소드는 몸통이 있는 메소드에만 사용할 수 있기 때문에

 

2) 클래스에 abstractfianl을 동시에 사용할 수 없다.

: 클래스에 사용되는 final은 클래스를 확장할 수 없다는 의미이고, abstract는 상속을 통해서

완성되어야 한다는 의미이므로 서로 모순되기 때문에

 

3) abstract 메소드의 접근제어자가 private일 수 없다.

: abstract 메소드는 자손클래스에서 구현하기 위해 접근해야 하기 때문에

 

4) 메소드에 privatefinal을 같이 사용할 필요는 없다.

: 접근 제어자가 private인 메소드는 오버라이딩 될 수 없기 때문에 (둘 중 하나만 사용해도 의미가 충분하다)