-
제어자 modifierProgramming/Java 2021. 8. 9. 11:18
제어자
클래스, 멤버변수, 메서드 선언부에 사용하여 부가적인 의미 부여
접근제어자 : public, protected, default, private (조합하여 사용 불가)
그 외 제어자 : static, final, abstract, native, transient, synchronized, volatile, strictfp(다른 제어자와 조합 가능)
static
사용되는 위치 : 멤버변수, 메서드, 초기화블럭
제어자 대상 의미 static 멤버변수 모든 인스턴스에 공통적으로 사용되는 클래스 변수
(모든 인스턴스에서 공통으로 유지해야 하는 값이 있는 경우 static을 붙이자)
클래스가 메모리에 로드 시 생성됨 ->
클래스변수는 인스턴스 생성하지 않고 사용 가능메서드 인스턴스를 생성하지 않고 호출 가능
인스턴스 멤버들을 직접 사용 불가초기화블럭 클래스가 메모리에 로드 시 단 한번만 수행
주로 클래스변수(static 변수) 초기화에 사용※ 인스턴스 메서드와 static 메서드(클래스메서드)의 차이 : 메서드 내에서 인스턴스 멤버를 사용하는가 (인스턴스 멤버를 사용하지 않는다면 static메서드로 하자)
final 변경 불가
제어자 대상 의미 final 클래스 변경 불가, 확장 불가 -> 상속 불가 메서드 변경 불가 -> 오버라이딩 불가 멤버변수 값 변경 불가한 상수 지역변수 ※ final 멤버변수 초기화는 보통 선언과 초기화 동시에 하지만, 인스턴스 변수라면 매개변수 생성자를 이용해 초기화할 수도 있다.
abstract 미완성
제어자 대상 의미 abstract 클래스 클래스 내에 추상메서드 선언되어 있음.
미완성 메서드 -> 인스턴스를 생성할 수 없다메서드 선언부만 작성, 구현부는 없다 ※ 드물지만 추상 메서드가 없는 클래스도 abstract를 붙여 추상 클래스로 만들 수 있다.
예 ) WindowAdapter 클래스
public abstract class WindowAdapter implements WindowListener, WindowStateListener, WindowFocusListener
{
public void windowOpened(WindowEvent e) {}
public void windowClosing(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
.....
}
※ 포스팅에 사용한 도서 : 남궁성 자바의 정석 3판
'Programming > Java' 카테고리의 다른 글
제어자의 조합 (0) 2021.08.09 접근제어자 (0) 2021.08.09 다형성 (0) 2021.08.02 프로그래밍 언어의 분류 (0) 2021.07.31 변수, 배열, 구조체, 클래스, 객체, 인스턴스 (0) 2021.07.29