o default 변경자
§ 클래스 접근을 동일 패키지에 한정하려고 사용
§ 동일 패키지에 있는 모든 클래스에 접근할 수 있는 접근 권한을 제공
§ 사용법
• 아무런 변경자도 적지 않는다.
o public 변경자
§ 패키지 외부에서도 접근할 수 있도록 클래스를 개방하는 것
§ 선언된 클래스나 필드, 메소드는 자유롭게 접근이 용이
• 패키지, 외부 모두 접근 가능
§ 캡슐화를 해치지 않는지 고려해야 함
o protected 변경자
§ private, default, public 등 세 가지 변경자를 혼합한 성격
§ 패키지 외부 클래스에서 접근하는 것은 차단
§ 패키지 내부 클래스에서 접근하는 것은 허용
§ 상속관계에서 접근하는 것은 허용
o private 변경자
§ 클래스의 필드나 메소드에서 외부 클래스의 접근을 차단하는 기능을 제공
§ 클래스 내부 메소드를 제외하고는 접근을 허락하지 않음
§ private로 선언된 메소드 또한 클래스 내부 메소드만 호출 가능
Static 접근자를 이용한 활용법.
- 필드나 메소드의 속성을 변경
- 고정된 메모리 공간이 할당
• static 영역이 별도의 공유 영역에서 관리 - 인스턴스를 생성하지 않고 클래스명만 이용해 호출
- static 메소드에서는 인스턴스 변수에 접근할 수 없다
• 예) main 메소드는 static으로 선언되어 있기 때문
동일 클래스에 있는 멤버변수라도 접근할 수 없다 - static 변경자 사용할 시 유의사항
• 필드에 static 변경자를 붙일 때
– 해당 필드가 클래스의 인스턴스와 공유하는 필드인지 확인
• 메소드에 static을 붙일 때
- 해당 메소드에서 인스턴스 변수에 접근하지 않는지 확인
Static 매소드를 이용한 예제
package javabook.ch06;
class MathEx {
( static ) double PI = 3.14;
static int abs(int nNum) {
if(nNum < 0)
nNum = nNum * -1;
return nNum;
}
double abs(double dNum) {
if(dNum < 0)
dNum = dNum * -1.0;
return dNum;
}
}
public class Extra6_1 {
public static void main(String[ ] args) {
MathEx math = new MathEx( );
System.out.println(( MathEx ).abs(-10)); // Static 이라서 클래스 이름으로 직접접근 가능
System.out.println(( math ).abs(-23.5)); // 인스턴스 변수라 객체 생성후 접근
System.out.println(MathEx.PI);
}
}
Final 변경자
매개변수를 전달할 시, 실수로 전달받은 변수값을 바꾸는 오류를 최소화