자바 (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개 중 하나만 사용 가능하다. 접근 제어자는 접근 범위에 따라 다음으로 나뉜다.
[그림 2]를 통해 상속할 조상의 멤버에는 protected의 접근 제어자를 붙여줘야 한다는 것을 알 수 있다.
접근 제어자를 사용하는 이유는 캡슐화 때문이다. 캡슐화는 내부 데이터를 감추고 setter, getter와 같은 public 메서드를 통해서만 내부 데이터를 변경 또는 접근하게 한다. 이러한 이유로 접근 제어자 범위는 좁으면 좁을수록 좋다.
대상 | 사용 가능한 접근 제어자 |
클래스 | public, (default) |
메서드 | public, (default), protected, private |
멤버 변수 | |
지역 변수 | - |
반응형