-
[Java] 기초 - Java 제어자(modifier), 접근 제어자(access modifier)Java 2017. 12. 12. 21:04반응형
1. 제어자(modifier)
- 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다.
- 접근제어자 : public, protected, default, private
- 그 외 제어자 : static, final, abstract, native, transient, synchronized, volatile, strictfp
- 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근제어자는 단 하나만 사용할 수 있다.
2. static
- '클래스의' 또는 '공통적인' 의미를 가지고 있다.
- static이 붙은 멤버변수와 메서드, 초기화 블럭은 인스턴스를 생성하지 않고도 사용할 수 있다.
- static 멤버변수
- 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 된다.
- 클래스변수는 인스턴스를 생성하지 않고도 사용가능하다.
- 클래스가 메모리에 로드될 때 생성된다.
- static 메서드
- 인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 된다.
- static메서드 내에서는 인스턴스멤버들을 직접 사용할 수 없다.
3. final
- '마지막의' 또는 '변경될 수 없는' 의미를 가지고 있다.
- final 클래스
- 변경 될 수 없는 클래스, 확장될 수 없는 클래스가 된다.
- 다른 클래스의 조상이 될 수 없다.
- final 메서드
- 변경 될 수 없는 메서드, 오버라이딩을 통해 재정의 될 수 없다.
- final 멤버변수, final 지역 변수
- 변경 할 수 없는 상수가 된다.
- final이 붙은 변수는 상수이므로 보통은 선언과 초기화를 동시에 하지만, 인스턴스변수의 경우 생성자에서 초기화 할 수 있다.
4. abstract
- '추상의' 또는 '미완성의' 의미를 가지고 있다.
- 메서드의 선언부만 작성하고 실제 수행 내용은 구현하지 않은 추상메서드를 선언하는데 사용한다.
- abstract 클래스
- 클래스 내에 추상메서드가 선언되어 있음을 의미한다.
- abstract 메서드
- 선언부만 작성하고 구현부는 작성하지 않은 추상메서드임을 알린다.
5. 접근 제어자(access modifier)
- 멤버 또는 클래스에 사용, 외부에서 접근하지 못하도록 제한한다.
- 클래스, 멤버변수, 메서드, 생성자에 사용되고, 지정되어 있지 않다면 default임을 뜻한다.
- public : 접근 제한이 전혀 없다.
- protected : 같은 패키지 내에서, 다른 패키지의 자손클래스에서 접근이 가능하다.
- default : 같은 패키지 내에서만 접근이 가능하다.
- private : 같은 클래스 내에서만 접근이 가능하다.
종류
클래스
하위클래스
동일 패키지
모든 클래스
private
O
X
X
X
default
O
X
O
X
protected
O
O
O
X
public
O
O
O
O
- 사용가능한 접근 제어자
- 클래스 : public, default
- 메서드 & 멤버변수 : public, protected, default, private
- 지역변수 : 없음
6. 접근 제어자를 이용한 캡슐화 (은닉성)
- 접근제어자는 클래스 내부에 선언된 데이터를 보호하기 위해서 사용한다.
- 유효한 값을 유지하도록, 함부로 변경하지 못하도록 접근을 제한하는 것이 필요하다.
- 데이터 감추기(data hiding)라고 하며, 캡슐화(encapsulation)에 해당한다.
7. 생성자의 접근 제어자
- 생성자에 접근 제어자를 사용함으로 인스턴스의 생성을 제한할 수 있다.
- 일반적으로 생성자의 접근 제어자는 클래스의 접근 제어자와 일치한다.
8. 제어자의 조합
- 사용가능한 제어자
- 클래스 : public, default, final, abstract
- 메서드 : public, protected, default, private, final, abstract, static
- 멤버변수 : public, protected, default, private, final, static
- 지역변수 : final
- 메서드에 static과 abstract를 함께 사용할 수 없다.
- 클래스에 abstract와 final을 동시에 사용할 수 없다.
- abstract메서드의 접근 제어자가 private일 수 없다.
- 메서드에 private와 final을 같이 사용할 필요는 없다.
원문 출처: http://gangzzang.tistory.com/entry/Java-제어자modifier [갱짱.study]
반응형'Java' 카테고리의 다른 글
java 람다식 lamda 여러가지 응용하기 (0) 2020.04.25 Java 람다식(Lambda Expressions) 이란? (0) 2020.04.18 [Java] 게시판 페이징(Paging) 로직 (0) 2017.12.12 [toArray] 자바 List 리스트값 String[] 배열안에 넣기 (0) 2017.08.22 자바(java) 정규식이용 초간단 문자열 변경,치환 replaceAll (아스타처리, 마스킹처리) (1) 2017.04.29