본문 바로가기
java/개념

접근 지정자

by unhyepnhj 2024. 5. 20.

패키지

- 서로 관련 있는 클래스 파일(.class)들을 패키지에 저장하여 관리

- 폴더 개념과 비슷

- 자바 응용프로그램은 여러 개의 패키지로 구성

 

접근 지정자

- public: 모든 클래스에 접근 허용

- private: 동일 클래스 내에서만 접근 허용

- protected: 동일 패키지 내에서만 접근 허용, 서브 클래스일 시 다른 패키지에 있어도 접근 허용

- default: 같은 패키지 내에서만 접근 허용


클래스 접근 지정

- 다른 클래스에서 현재 클래스를 활용할 수 있는지 허용 여부 지정

 

1. public 클래스

- 패키지와 상관없이 다른 모든 클래스에게 접근 허용

public class World{
	...
}

 

2. 디폴트 클래스

- 접근 지정자가 생략된 경우 default로 선언

- package-private라고도 함

- 같은 패키지 내의 클래스들에게만 접근 허용

class Local{	//접근 지정자가 생략되었으므로 default
	...
}


멤버 접근 지정

 

1. public 멤버

- 패키지와 무관하게 모든 클래스들에게 접근 허용

A, C 모두 접근 가능

 

2. private 멤버

- 동일 클래스 내에서만 접근 허용

- 서브 클래스에서 접근 불가

다른 클래스의 A, C 모두에서 사용 불가

 

3. protected 멤버

- 같은 패키지 내의 모든 클래스에게 접근 허용

- 서브 클래스는 다른 패키지에 있어도 접근 가능

동일한 패키지의 C와 B의 서브 클래스인 D에게 접근 허용

 

4. 디폴트(default)멤버

- 같은 패키지 내의 모든 클래스에게 접근 허용

동일한 패티지의 C에게 접근 허용


예제 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