자바 (Java)/요약

Chpt 7. 객체 지향 프로그래밍 2 - 주제 3. 제어자

학듄 2023. 10. 26. 13:30
728x90

1. 제어자

 

제어자는 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 더해주는 형용사와 같다고 생각하면 된다. 제어자에는 다음과 같은 종류가 있다.

 

접근 제어자 public, protected, (default), private
그 외 static, final, abstract, ...

 

1) 그 외

 

(1) static - 클래스의, 공통적인

 

사용 인스턴스 생성 여부  인스턴스 멤버 사용 가능 여부 참조 변수 this 사용 가능 여부
static (멤버) 변수 (cv) X X X
static (멤버) 메서드 (cm) X X X
static 초기화 블럭 (복잡 초기화) X X X

 

3, 4열은 모두 2열과 관련 있음을 알아두자.

 

(2) final - 마지막의, 변경될 수 없는

 

대상 의미
클래스 상속 계층도의 제일 마지막 클래스, 상속 불가
메서드 오버라이딩 불가
변수 (멤버, 지역) 상수

 

final 멤버 변수를 생성자를 이용해 초기화하면 인스턴스마다 다른 final 멤버 변수를 갖고 있을 수 있다. 카드 클래스의 경우 숫자와 종류를 예로 들 수 있다. 상수에서도 final만 붙으면 인스턴스마다 다른 상수, static final이면 모든 객체에 공통적인 상수이다. final 상수는 보통 생성자를 통해 초기화한다.

 

[참고] 제일 대표적인 final 클래스는 String과 Math이다.

 

(3) abstract - 추상의, 미완성의

 

대상 의미
클래스 추상 메서드 하나라도 포함, 미완성 설계도
메서드 추상 메서드, 구현부 없음

 

2) 접근 제어자

 

클래스, 멤버 변수, 메서드(생성자 포함)에 사용된다. 접근 제어자는 [그림 1] 4개 중 하나만 사용 가능하다. 접근 제어자는 접근 범위에 따라 다음으로 나뉜다.

 

[그림 1]

 

[그림 2] MyParent.class 기준 접근 제어자의 범위

 

[그림 2]를 통해 상속할 조상의 멤버에는 protected의 접근 제어자를 붙여줘야 한다는 것을 알 수 있다.

 

접근 제어자를 사용하는 이유는 캡슐화 때문이다. 캡슐화는 내부 데이터를 감추고 setter, getter와 같은 public 메서드를 통해서만 내부 데이터를 변경 또는 접근하게 한다. 이러한 이유로 접근 제어자 범위는 좁으면 좁을수록 좋다.

 

대상 사용 가능한 접근 제어자
클래스 public, (default)
메서드 public, (default), protected, private
멤버 변수
지역 변수 -

 

반응형