자바 접근 제어자 (public, protected, private, default)
접근 제어자(Access Modifier)는 클래스나 인터페이스들이 가지고 있는 멤버의 접근을 제한하기 위해 사용합니다.
접근 제어자는 public, protected, private, default 로 나누어 집니다.
메소드와 필드 접근 제어자
public : 내부와 외부 클래스에서 자유롭게 사용할 수 있도록 지정합니다.
protected : 같은 패키지 내에서 또는 자식 클래스에서 사용할 수 있도록 지정합니다.
private : 같은 패키지라도 외부 클래스에서는 사용될 수 없도록 지정합니다. 오직 클래스 내부에서만 사용 가능합니다.
default : 위 세 가지의 접근 제어자가 적용되지 않으면 default 접근 제어자가 지정되어서
같은 패키지에 소속된 클래스에서만 사용할 수 있도록 지정합니다.
간단한 실습을 통해서 public 과 private 의 역할을 자세하게 살펴봅니다.
AccessTest 라는 새로운 클래스 파일을 만들어 실습을 진행합니다.
AccessTest 클래스내에 선언된 hello 메소드는 public, protected, private, default 중 어떠한 접근 제어자로 선언하더라도 같은 결과가 나타나는 것을 확인할 수 있습니다.
hello 메소드는 AccessTest 클래스내에 같이 위치하고 있으므로 어떤 접근 제어자가 선언되어도 결과는 동일하지만
다른 클래스에서 접근하는 것을 차단하고자 한다면 private 으로 선언합니다.
이번에는 hello 메소드를 Greeting 이라는 다른 클래스를 만들어서 옮기고 private 으로 선언합니다.
private 으로 선언된 hello 메소드는 Greeting클래스 내에서만 사용할 수 있으므로,
다른 클래스에서 실행하는 Greeting.hello(); 메소드는 에러가 발생합니다.
그러므로 Greeting클래스의 hello 메소드를 public, protected, default 중의 하나로 바꿔줘야 합니다.
여기서는 public 으로 바꿔서 실행해 보았습니다.
클래스의 접근 제어자
클래스는 public 과 default 두 가지의 접근 제어자를 가집니다.
클래스를 선언할 때 public 을 생략했다면 클래스는 default 접근 제어자를 가져서,
같은 패키지에서는 아무런 제한 없이 사용할 수 있지만 다른 패키지에서는 사용할 수 없습니다.
'자바' 카테고리의 다른 글
클래스 구조와 생성자 오버로딩 (0) | 2021.11.09 |
---|---|
생성자와 this (0) | 2021.11.08 |
static 변수와 static 메소드 (0) | 2021.11.07 |
클래스와 인스턴스 (0) | 2021.11.06 |
자바 인스턴스 (0) | 2021.11.06 |
댓글