1. 접근지정자

- 사용(접근) 권한 지정
- 기준 : 패키지, 클래스
- 선언 : 클래스, 멤버변수(클래스), 멤버메서드(클래스), 생성자

1. 접근지정자 종류

1) public
	- 어디에서든 사용 가능, 제한이 없음

2) protected
	- 같은 패키지 내에서만 사용이 가능
	- 단, 상속 관계에서는 다른 패키지에서도 사용 가능

3) default
	- 같은 패키지 내에서만 사용이 가능
	- Java 내에서는 생략

4) private
	- 같은 클래스 내에서만 사용이 가능

2. 4가지 중에서 한개만 선언 가능(중복 선언 불가)

캡슐화
- 외부에서 접근하는데 정보를 은닉하고 메서드를 통해서만 접근
- 내부 데이터를 보호

DTO(Data Transfer Object), VO(Value Object)
- 멤버변수는 모두 private
- 각각의 setter, getter 생성
- set변수명, get변수명 - camelcase형식

setXXX() : 뭔가를 입력하는 메서드
getXXX() : 뭔가를 가지고오는 메서드
isXXX()  : boolean 타입을 리턴하는 메서드

2. 그외 지정자

- 부가적인 의미
- static, final, abstract

1. static
- 공통의, 클래스의
- 객체를 생성하지 않고 사용 가능
- 하나의 프로그램내에서 공통으로 사용 할 때

1) 선언 위치
	a. 멤버변수 : 클래스변수
		- 더 이상 멤버 변수가 아님
		- 클래스명.클래스변수명
	b. 멤버메서드 : 클래스메서드
		- 더 이상 멤버 메서드가 아님
		- 클래스명.메서드명();

- Instance 메서드 내에서는 클래스변수, 클래스메서드 사용 가능
- 클래스 메서드 내에서는 클래스변수, 클래스 메서드 사용 가능
- 클래스 메서드 내에서 Instance 변수, Instance 메서드 사용 불가

2) 클래스 변수 초기화
	a. 변수 선언시 초기화 : public static int num=1;
	b. static 초기화 블럭 : static { ... }

2. final
	- 변하지 않는, 마지막, 변경할 수 없는

1) 선언 위치
	a. 클래스 선언부           : 이 클래스는 상속(extends) 금지
	b. 멤버(클래스) 변수 선언부 : 상수 취급, 한번 대입한 값은 변경 금지
													  : 변수명은 모두 대문자로 작성 
	c. 멤버메서드 선언부        : 이 메서드는 변경(오버라이딩) 금지
	d. 지역 변수 선언부         : 상수 취급

3. abstract
	- 변경해라, 추상적인,,,
1) 선언 위치
	a. 클래스 선언부          : 이 클래스는 상속(extends) 해서 사용
	b. 멤버메서드 선언부       : 이 메서드는 변경(오버라이딩) 해서 사용

4. 그 외 지정자는 의미만 맞으면 두개 이상 가능
	public static final int NUM=1;  OK
	public final abstract test(){}  Error