패키지
- 서로 관련 있는 클래스 파일(.class)들을 패키지에 저장하여 관리
- 폴더 개념과 비슷
- 자바 응용프로그램은 여러 개의 패키지로 구성
접근 지정자
- public: 모든 클래스에 접근 허용
- private: 동일 클래스 내에서만 접근 허용
- protected: 동일 패키지 내에서만 접근 허용, 서브 클래스일 시 다른 패키지에 있어도 접근 허용
- default: 같은 패키지 내에서만 접근 허용
클래스 접근 지정
- 다른 클래스에서 현재 클래스를 활용할 수 있는지 허용 여부 지정
1. public 클래스
- 패키지와 상관없이 다른 모든 클래스에게 접근 허용
public class World{
...
}
2. 디폴트 클래스
- 접근 지정자가 생략된 경우 default로 선언
- package-private라고도 함
- 같은 패키지 내의 클래스들에게만 접근 허용
class Local{ //접근 지정자가 생략되었으므로 default
...
}
멤버 접근 지정
1. public 멤버
- 패키지와 무관하게 모든 클래스들에게 접근 허용
2. private 멤버
- 동일 클래스 내에서만 접근 허용
- 서브 클래스에서 접근 불가
3. protected 멤버
- 같은 패키지 내의 모든 클래스에게 접근 허용
- 서브 클래스는 다른 패키지에 있어도 접근 가능
4. 디폴트(default)멤버
- 같은 패키지 내의 모든 클래스에게 접근 허용
예제 4-10 다음 코드의 컴파일 오류를 찾아내고 그 이유를 설명
- 클래스 Sample과 AccessEx 는 동일한 패키지에 저장
class Sample{
public int a;
private int b;
int c;
}
public class AccessEx {
public static void main(String[] args) {
Sample sample=new Sample();
sample.a=10;
sample.b=10;
sample.c=10;
}
}
Sample 클래스의 필드 b는 private 멤버이므로 AccessEx 클래스에게 접근이 허용되지 않는다.
-> 라인 11에서 컴파일 오류 발생
'java > 개념' 카테고리의 다른 글
final (0) | 2024.05.20 |
---|---|
static (0) | 2024.05.20 |
객체 소멸과 가비지 컬렉션 (0) | 2024.05.20 |
메소드 활용 - 메소드 오버로딩 (0) | 2024.05.20 |
메소드 활용 - 인자 전달 (0) | 2024.05.20 |