🏃♂️ 들어가기 앞서..
본 게시물은 스터디 활동 중에 작성한 게시물로 자바의 정석-기초편 교재를 학습하여 정리하는 글입니다.
※ 스터디 Page : 〔투 비 마스터 : 자바〕
*해당 교재의 목차 순서와 구성을 참고하여 작성하며
각 내용마다 부족할 수 있는 내용이나 개인적으로 궁금한 점은
추가적인 검색을 통해 채워나갈 예정입니다.
modifier
)[ 클래스 / 변수 / 메서드 ]의
" 선언부 "에 함께 사용되어 부가적인 의미를 부여한다.
- 접근 제어자 :
public
protected
,private
,(default)
- etc :
static
,final
,abstract
,native
,transient
,synchronized
,volatile
,strictfp
(강조된 3가지를 제외하고는 자주 사용되진 않는다.)
제어자는
"클래스"나 "멤버변수"와 "메서드"에 주로 사용되고
" 하나의 대상에 대해 여러 제어자 조합 사용 가능하다. "
단,
위 접근 제어자의 경우
네 가지 중 하나만 한 번에 사용할 수 있다.
( ex. public 과 private 동시 사용 X )
📢
static
- "클래스의" , "공통"※ 사용 : 멤버변수 / 메서드 / 초기화 블럭
각기 다른 값을 유지하는 인스턴스 변수와는 다르게
클래스 변수(static 멤버변수)는 모든 인스턴스가 공유하기 때문에
인스턴스 관계없이 같은 값을 가진다.
그렇기 때문에
< 클래스 멤버변수 & 메서드 & 초기화 블럭 >에
static
이 붙게되면
" 인스턴스를 생성하지 않고도 사용할 수 있다. "인스턴스 멤버를 사용하지 않는 메서드라면
static메서드로 선언하는 것이 편리하고 속도도 빠르다.
📢
final
- "마지막" , "불변적"※ 사용 : 클래스 / 메서드 / 멤버변수 / 지역변수
거의 모든 대상에 사용될 수 있는 제어자로
- " 변수 " 사용 : 값 변경이 불가능한 상수로 (지역변수/멤버변수 )
- " 메서드 " 사용 : 오버라이딩 불가능한 메서드로
- " 클래스 " 사용 : 자손 클래스 정의 등 확장 불가능한 클래스로
📢
abstract
- "추상적" , "미완성"※ 사용 : 클래스 / 메서드
선언부만 작성 하고
" 실제 수행내용은 구현하지 않은 " 추상 메서드를 선언할 때 사용한다.
access
) 제어자" 외부에서 접근하지 못하도록 제한 하는 역할 "
( 클래스 내부에 선언된 데이터 보호 차원 & .gitignore
의 역할 유사 )
기본값은 말그대로 default
인데 실제로 붙이지는 않는다.
( 접근제어자가 지정되어 있지 않은 상태가 default라고 할 수 있다. )
※ 접근범위 =
public
>protected
>(default)
>private
public
: 접근 제한 X
(default)
: 같은 패키지 내에서만 접근 가능
private
: 같은 클래스 내에서만 접근 가능
(인스턴스 생성하여 멤버변수 직접 접근&변경 대비 )
protected
: 같은 패키지 & 타 패키지 자손클래스에서 접근 가능
(만약 상속으로 확장될 것 같다면 private 대신 protected를 사용한다.)
위에서 설명했듯이
데이터를 외부에서 함부로 건드리지 못하도록 접근을 제한하는데
이것을
" 데이터 감추기(data hiding) "이라 하고
객체지향개념의 " 캡슐화(encapsulation) "에 해당한다.
물론 데이터 보호뿐만 아니라
외부에서 접근할 필요없는
내부 작업을 위한 임시 멤버변수 나 부분작업 처리 메서드 등 같은 멤버들을 감추는 용도이기도 한다.
( 위와 같은 멤버 private
지정 ▶ 외부 노출 방지 ▶ 복잡성 감소 : " 캡슐화(encapsulation) "에 해당 )
보통
" 멤버변수 값 조회 메서드 " :get멤버변수명
형식으로 작성
" 멤버변수 값 변경 메서드 " :set멤버변수명
형식으로 작성