🔶 자바의정석Ch7 - 12~14,15~16,17~20,21,22
✔ 자바의정석Ch7-12 패키지(package)
- 서로 관련된 클래스의 묶음
- 클래스는 클래스파일(*.class),패키지는 폴더. 하위 패키지는 하위폴더
- 클래스의 실제이름(full name)은 패키지를 포함한다 (java.lang.String)
- rt.jar(rt : runtime 실행할때, 실행중)는 클래스들을 압축한 파일 이다(JDK 설치경로\jre\lib에 위치) => java9부터는 rt.jar X
✔ 자바의정석Ch7-13 패키지의 선언
- 패키지는 소스파일의 첫 번째 문장으로 단 한번 선언한다
- 같은 소스 파일의 클래스들은 모두 같은 패키지에 속하게 된다
- 패키지 선언이 없으면 이름없는(unnamed) 패키지에 속하게 된다 => default packkage
✔ 자바의정석Ch7-14 클래스 패스(classpath)
- 클래스 파일(*.class)의 위치를 알려주는 경로(path)
- 환경변수 classpath로 관리하며, 경로간의 구분자는 ';'(세미콜론)을 사용한다
- classpath(환경변수)에 패키지의 루트를 등록해 줘야 한다
✔ 자바의정석Ch7-15 import문
- 클래스 사용시 패키지 이름을 생략할 수 있다
- 컴파일러에게 클래스가 속한 패키지를 알려준다
- java.lang패키지(기본패키지)의 클래스는 import하지 않고도 사용할 수 있다
- import문의 작성방법
1) import 패키지명.클래스명; => 이클립스 단축키 ctrl + shift + o
2) import 패키지명.*; => 모든 클래스
- import문은 패키지문과 클래스선언의 사이에 선언한다
- import문은 컴파일시 처리되므로 프로그램의 성능에 영향이 없다
- 이름이 같은 클래스가 속한 두 패키지를 import할 때는 클래스 앞에 패키지명을 붙여줘야 한다
✔ 자바의정석Ch7-16 scatic import문
- static멤버를 사용할 때 클래스 이름을 생략할 수 있게 해준다
✔ 자바의정석Ch7-17 제어자(modifier)
- 클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미를 부여한다
- 하나의 대상에 여러 제어자를 같이 사용가능하다(접근 제어자는 하나만 가능) 
✔ 자바의정석Ch7-18 static : 클래스의, 공통적인
✔ 자바의정석Ch7-19 final : 마지막의, 변경될 수 없는
✔ 자바의정석Ch7-20 abstract : 추상의, 미완성의
✔ 자바의정석Ch7-21 접근제어자(access modifier)
1) private : 같은 클래스 내에서만 접근 가능하다
2) (default) : 같은 패키지 내에서만 접근 가능하다
3) protected : 같은 패키지 내에서,그리고 다른 패키지의 자손클래스(다른패키지)에서 접근 가능하다
4) public : 접근 제한이 전혀 없다
✔ 자바의정석Ch7-22 캡슐화와 접근 제어자
- 접근 제어자를 사용하는 이유 : 외부로부터 데이터를 보호하기 위해서 사용 한다 -> 캡슐화
-
예제
package Java_Nam; class Time{ private int hour; // 0~23사이의 값을 가져야 한다 private int minute; private int second; public void setHour(int hour) { if(extracted(hour)) return; this.hour = hour; } // 조건식 선택 후 alt + shift + m : 선택한 조건문 리턴하는 메서드 생성 // 매개변수로 넘겨진 hour가 유효한지 확인해서 알려주는 메서드 private boolean extracted(int hour) { return hour < 0 || hour > 23; } public int getHour() { return hour; } } public class TimeTest { public static void main(String[] args) { Time t = new Time(); // t.hour = 25; t.setHour(21); // hour의 값을 21로 변경 System.out.println(t.getHour()); } }