패키지는 물리적인 형태는 파일 시스템의 폴더입니다. 패키지는 단순히 파일 시스템의 폴더 기능만
하는것이 아니라 클래스의 일부분으로, 클래스를 유일하게 만들어주는 식별자 역할을 합니다.
클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스로 인식합니다.
클래스 이름이 같지만 패키지가 달라서 다른 클래스로 인식해서 오류가 발생하지 않음
윈도우
문서\pdf문서\abc.pdf
문서\엑셀문서\abc.xls
문서\한글문서\abc.hwp
자바
패키지
문서.pdf문서.abc.class
문서.엑셀문서.abc.class
문서.한글문서.abc.class
상위패키지.하위패키지.클래스
package 상위패키지.하위패키지;
public class CalssName { ... }
다른 패키지에 있는걸 사용하려면 import를 사용해야함
패키지선언 -> import선언 -> 클래스선언 순서 꼭 지켜주자
import 패키지명. : 은 패키지에 포함된 모든 클래스를 가지고 올때 사용
접근 제한자(Access Modifier)는 말 그대로 접근을 제한하기 위해 사용됩니다.
여기서 접근이란 클래스 및 인터페이스 그리고 이들이 가지고 있는 멤버의 접근을 말한다.
public >> protected >> default >> private 순서
위 세 가지 접근 제한자가 적용되지 않으면 default 접근 제한을 가진다.
default : 같은 패키지에 소속된 클래스에서만 사용할 수 있도록 한다.
따로 default라고 작성할 필요없음!!
2가지만 사용가능
생성자가 어떤 접근제한을 갖느냐에 따라 호출 가능 여부가 결정된다.
4가지 사용가능
public : 모든 패키지에서 아무런 제한없이 생성자를 호출할수 있다.
protected : 패키지에 속하는 클래스에서 생성자를 호출할 수 있도록 한다.
다른 패키지에 속한 클래스가 해당 클래스의 자식(child) 클래스라면 생성자를 호출할 수 있습니다.
default : 필드와 메소드를 선언할 때 접근제한자를 생략하면 default 접근제한을 가집니다.
default 접근 제한은 같은 패키지에서 아무런 제한 없이 필드와 메소드를 사용할 수 있으나,
다른 패키지에서는 필드와 메소드를 사용할 수 없도록 합니다.
private : 동일한 패키지건 다른 패키지이건 상관없이 필드와 메소드를 사용하지 못하도록 제한한다.
오로지 클래스 내부에서만 사용가능
// 필드 선언
[ public | protected | default | private ][static] 타입 필드;
// 메소드 선언
[ public | protected | default | private ][static] 리턴 타입 메소드( . . . ){ . . . }
public : 모든 패키지에서 아무런 제한없이 필드와 메소드를 사용 가능
protected : 같은 패키지에 속하는 클래스에서 필드와 메소드를 호출할 수 있도록 한다.
다른 패키지에 속한 클래스가 해당 클래스의 자식 클래스라면 필드와 메소드를 사용할 수 있다.
default : 필드와 메소드를 선언할 때 접근제한자를 생략하면 default 접근제한을 가집니다.
default 접근 제한은 같은 패키지에서 아무런 제한 없이 필드와 메소드를 사용할 수 있으나
다른 패키지에서는 필드와 메소드를 사용할 수 없도록 합니다.
private : 동일한 패키지건 다른 패키지이건 상관없이 필드와 메소드를 사용하지 못하도록 제한한다.
오로지 클래스 내부에서만 사용가능
ex)
// 필드
// 외부에서 접근할 수 없도록 막고
private int speed;
// 메소드
// 공개해서 외부에서 메소드를 통해 필드에 접근 유도
void setSpeed(double speed){
//만약에 speed값이 음수이면
if(speed < 0){
// 아무것도 안하고 setSpeed 메소드 종료
return;
}
else{ // speed값이 양수이면
// speed필드에 값을 저장.
this.speed = speed;
}
} //setSpeed끝
double getSpeed(){
double km = speed*1.6;
return km;
}
}
Setter : 매개값을 검증해서 유효한 값만 객체의 필드로 저장하는 역할을 함
Getter : 메소드로 필드값을 가공한 후 외부로 전달하는 역할을 함
끝.