package 키워드
패키지(package)
-> 서로 관련된 클래스 묶음입니다.
-> 클래스는 클래스 파일(*.class), 패키지는 폴더, 하위패키지는 하위폴더입니다.
-> 클래스의 실제 이름 (full name)은 패키지를 포함합니다.
-> 패키지 명은 대소문자를 허용하지만 클래스명과 쉽게 구분하기 위해서 소문자로 하는 것을 원칙으로 하고 있습니다.
-> 모든 클래스는 반드시 하나의 패키지에 포함되어야하며, 따로 패키지가 선언 안되어있는 경우 '이름 없는 패키지(unnamed package)'에 속하게 됩니다.
위에서 이미지에서처럼 package challenge6; >> 이렇게 package 패키지명; 으로 패키지명을 선언합니다.
import 키워드
-> import는 클래스를 사용할 떄 패키지 이름을 생략 할 수 있고, 컴파일러에게 클래스가 속한 패키지를 알려줍니다.
-> java.lang패키지의 클래스는 import하지 않고 사용 가능합니다.
-> import문은 패키지문과 클래스 선언의 사이에 선언합니다.
-> import문은 컴파일시에 처리되므로 프로그램 성능에 영향이 없습니다.
-> import문의 선언은 import 패키지명.클래스명; 또는 import 패키지명.*;로 합니다.
-> 패키지명.*;의 경우 해당 패키지에 있는 모든 클래스를 다 사용하겠다는 의미입니다.
static import문
-> static import문을 사용하면 static멤버를 호출할 때 클래스 이름을 생략할 수 있습니다.
-> 특정 클래스의 static멤버를 자주 사용할 때 편리하며, 코드도 간결해집니다.
클래스패스 + CLASSPATH 환경변수
-> 클래스파일 (*.class)의 위치를 알려주는 경로입니다.
-> JVM이 프로그램을 실행할 때, 클래스파일을 찾는 데 기준이 되는 파일 경로를 말하는 것입니다.
클래스패스를 지정하는 첫번째 방법
① '제어판-시스템-고급 시스템 설정 - 환경변수- 새로만들기'에서 JAVA_HOME을 먼저 설정합니다.
② 동일한 경로에서 CLASSPATH를 설정합니다.
③ 이미지의 경로로 path설정을 합니다.
④ cmd창을 열고 java -version , 그리고 javac -version 명령어를 쳐서 위와같이 나오는지 확인합니다.
다만, 위와같이 설정한 경우에는 윈도우상에 있는 모든 java파일의 jdk경로가 동일하게 설정이 됩니다.
클래스패스를 지정하는 두번째 방법
-> 저는 주로 사용하는 툴이 이클립스 이므로 이클립스에서 클래스 패스를 추가하는 방법을 알아보겠습니다.
-> Eclipse는 자동으로 jdk를 내부적으로 관리하므로 클래스패스를 추가하는 방법입니다.
① Eclipse > 프로젝트 오른쪽 클릭 > build path > configure build path
② Java Build Path > Libraries 에서 JAR파일이나 Class Folder등 추가가 가능합니다.
-classpath 옵션
컴파일이나 런타임시에 추가 클래스파일을 설정할 수 있고, 사용방법은 아래와 같습니다.
javac -classpath 프로젝트경로/WEB-INF/lib/* 프로젝트경로/WEB-INF/classes/SomeFile.java
절대경로로 입력하든, 상대경로로 입력하든 시스템이 찾아갈수있게끔만 지정해주면 됩니다.
접근지시자 (접근제어자, access modifier)
접근 지시자는 멤버 또는 클래스에 사용되며, 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 합니다.
접근 지시자가 default임을 알리기 위해 실제로 default를 붙이지 않습니다.
(클래스나 멤버변수, 메서드, 생성자에 접근 지시자가 지정되어있지 않다면, 접근 제어자가 default임을 뜻합니다.)
접근 지시자가 사용될 수 있는 곳 - 클래스, 멤버변수, 메서드, 생성자 | |
private 같은 클래스 내에서만 접근이 가능합니다. default 같은 패키지 내에서만 접근이 가능합니다. protected 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능합니다. public 접근 제한이 없습니다. |
제어자 | 같은 클래스 | 같은 패키지 | 자손 클래스 | 전체 |
public | O | O | O | O |
protected | O | O | O | |
(default) | O | O | ||
private | O |
① 접근범위가 넓은 쪽에서 좁은 쪽의 순서
public > protected > (default) > private |
public 은 접근 제한이 전혀 없는것이고, private는 같은 클래스 내에서만 사용하도록 제한하는 가장 높음 제한입니다.
다만, protected는 패키지에 상관없이 상속관계에 있는 자손 클래스에서 접근할 수 있도록 하는것이 제한 목적이지만 ,
같은 패키지 내에서도 접근이 가능합니다.
그래서 defult보다 접근 범위가 넓습니다.
② 대상에 따라 사용할 수 있는 접근지시자
대상 | 사용가능한 접근지시자 |
클래스 | public, (default) |
메서드 | public, protected,(default),private |
멤버변수 | |
지역변수 | 없음 |
<Reference>
자바의 정석 저자 남궁 성 (기초편, 3rd Edition)
'Challenge' 카테고리의 다른 글
9주차 과제: 예외 처리 (0) | 2021.01.15 |
---|---|
8주자 과제: 인터페이스 (0) | 2021.01.08 |
6주차 과제: 상속 (0) | 2020.12.26 |
5주차 과제: 클래스 (0) | 2020.12.19 |
4주차 과제: 제어문 (0) | 2020.12.03 |
댓글