반응형

1. 개요

 - 클래스에 접근을 제어하는 접근제어자에 대해 복습하였다.


2. 접근제어자

 - 클래스의 멤버변수와 메서드는 접근제어자를 통해 외부에서의 접근을 제어할 수 있다.

 - 접근제어자의 종류와 특징은 다음과 같으며, public과 private가 자주 사용된다.

 

  > public : 클래스의 외부에서 접근이 가능.

  > private : 클래스 내부에서만 접근 가능.

  > default : 동일 패키지에 있는 다른 클래스에서 접근 가능.

  > protected : 동일 패키지의 다른 클래스와 다른 패키지의 하위클래스에서 접근 가능 

 


3. public

 - MyClass 멤버변수의 접근제어자를 public으로 설정하면 외부 클래스인 AccessMain 클래스에서 접근이 가능하다.

 - 멤버변수가 public으로 되어있기 때문에 위 객체의 값을 어디서든 수정, 조회할 수 있다.

MyClass
AccessMain


4. private

 - MyClass 멤버변수의 접근제어자를 private로 설정하면 외부 클래스인 AccessMain 클래스에서 접근이 불가능하다.

 - 예제의 AccessMain 클래스를 보면 7번째 줄에서 컴파일 에러가 발생함을 확인할 수 있다.

 - 접근제어자가 public인 getter, setter 메서드를 생성하면 메서드를 통한 접근이 가능해진다. (AccessMain : 9 line)

 - 만약 특정 객체에 대해 값을 조회하는 기능만 넣고싶다면 public 형식의 getter만 생성하면 된다.

MyClass


5. default

 - MyClass 멤버변수의 접근제어자 설정하지 않으면 default로 설정되며 같은 패키지 내의 클래스에서만 접근할 수 있다.

 - MyClass와 AccessMain 클래스는 같이 패키지에 위치하므로 접근이 가능하다.

 - AccessMain2 클래스는 MyClass의 하위 패키지에 위치하므로 접근이 불가능하다.

MyClass

 

AccessMain

 

AccessMain2


5. protected

 - MyClass 멤버변수의 접근제어자를 protected로 설정하면 같은 패키지 내의 클래스와 자식클래스에서 접근할 수 있다.

 - MyClass와 AccessMain 클래스는 같이 패키지에 위치하므로 접근이 가능하다.

 - AccessMain2 클래스는 MyClass의 하위 패키지에 위치하지만 MyClass를 상속받은 자식클래스이므로 접근할 수 있다.

MyClass

 

AccessMain

 

AccessMain2


6. 마치며

 접근제어자에 대한 복습을 하니, 머릿속에 한번 더 정리되는 느낌이 들어 좋다. default는 있는지도 몰랐는데... 신기했으나 앞으로 쓸일은 없을것같다!

반응형

+ Recent posts