1. 개요
- 클래스에 접근을 제어하는 접근제어자에 대해 복습하였다.
2. 접근제어자
- 클래스의 멤버변수와 메서드는 접근제어자를 통해 외부에서의 접근을 제어할 수 있다.
- 접근제어자의 종류와 특징은 다음과 같으며, public과 private가 자주 사용된다.
> public : 클래스의 외부에서 접근이 가능.
> private : 클래스 내부에서만 접근 가능.
> default : 동일 패키지에 있는 다른 클래스에서 접근 가능.
> protected : 동일 패키지의 다른 클래스와 다른 패키지의 하위클래스에서 접근 가능
3. public
- MyClass 멤버변수의 접근제어자를 public으로 설정하면 외부 클래스인 AccessMain 클래스에서 접근이 가능하다.
- 멤버변수가 public으로 되어있기 때문에 위 객체의 값을 어디서든 수정, 조회할 수 있다.
4. private
- MyClass 멤버변수의 접근제어자를 private로 설정하면 외부 클래스인 AccessMain 클래스에서 접근이 불가능하다.
- 예제의 AccessMain 클래스를 보면 7번째 줄에서 컴파일 에러가 발생함을 확인할 수 있다.
- 접근제어자가 public인 getter, setter 메서드를 생성하면 메서드를 통한 접근이 가능해진다. (AccessMain : 9 line)
- 만약 특정 객체에 대해 값을 조회하는 기능만 넣고싶다면 public 형식의 getter만 생성하면 된다.
5. default
- MyClass 멤버변수의 접근제어자 설정하지 않으면 default로 설정되며 같은 패키지 내의 클래스에서만 접근할 수 있다.
- MyClass와 AccessMain 클래스는 같이 패키지에 위치하므로 접근이 가능하다.
- AccessMain2 클래스는 MyClass의 하위 패키지에 위치하므로 접근이 불가능하다.
5. protected
- MyClass 멤버변수의 접근제어자를 protected로 설정하면 같은 패키지 내의 클래스와 자식클래스에서 접근할 수 있다.
- MyClass와 AccessMain 클래스는 같이 패키지에 위치하므로 접근이 가능하다.
- AccessMain2 클래스는 MyClass의 하위 패키지에 위치하지만 MyClass를 상속받은 자식클래스이므로 접근할 수 있다.
6. 마치며
접근제어자에 대한 복습을 하니, 머릿속에 한번 더 정리되는 느낌이 들어 좋다. default는 있는지도 몰랐는데... 신기했으나 앞으로 쓸일은 없을것같다!
'백엔드 > JAVA' 카테고리의 다른 글
[JAVA] DefaultHttpClient와 CloseableHttpClient의 차이 2 (1) | 2021.08.25 |
---|---|
[JAVA] DefaultHttpClient와 CloseableHttpClient의 차이 1 (0) | 2021.08.24 |
[Java] 예외처리, Throw, Throws란 / 예외와 에러의 차이 / 예제 (1) | 2021.06.04 |
[JAVA] String을 Json 으로 변환. String to Json (1) | 2021.02.03 |
[WEB] log4j2 사용 / log4j2.xml / log4j2 설정/ 활용 2편 (0) | 2020.09.18 |