접근제한자
- 클래스, 클래스 멤버에 대해 접근을 어디까지 허용하는지 제한
public class Person{
String name;
int age;
Person(String name, int age){
this.name = name;
this.age = age;
}
}
Person person = new Person("홍길동", 25);
person.name = "노지연";
person.age = 15;
//"홍길동"(25)객체를 "노지연"(15)로 고의적.임의적으로 바꿀 수 있음
>> 객체 정보를 아무렇게나 임의적으로 바꿀 수 있다면 보안상으로 많은 위험이 따름
>> 따라서, 객체의 정보에 접근하는 것에 대한 제약이 필요
>> 정보 은닉을 위한 방법으로 접근제한자를 사용함
접근제한자의 종류
- 접근 제한자에는 public, protected, default, private가 있다
public
- 어디서든(클래스 내부, 같은 패키지, 다른 패키지) 접근 가능.
- 클래스, 필드, 메소드 선언에서 사용 가능
protected
- 같은 패키지 안에서만 호출 가능
- 해당 클래스를 상속받은 자식 클래스이면 다른 패키지에 있어도 호출 가능
(상속받지 않으면 다른 패키지의 다른 클래스 접근 불가)
- 필드, 메소드, 생성자 선언에 사용(클래스 선언에서는 사용하지 않음)
같은 패키지인 경우
다른 패키지인 경우
default (friendly)
- 선언시 작성하는 키워드가 아님
- 접근 제한 설정을 하지 않은 기본 상태
- 같은 패키지 안에서만 호출 가능
- 상속받더라도 다른 패키지에서는 접근 불가
private
- 접근 제한자 중에서 가장 엄격하게 제한.
- 패키지가 같은지 아닌지에 상관 없이 클래스 내부에서만 호출 가능
- 필드, 메소드, 생성자 선언에 사용(클래스 선언에서는 사용하지 않음)
클래스 내부 호출
클래스 외부 호출
: 같은 패키지 내 다른 클래스, 다른 패키지의 다른 클래스 모두 에러 발생
'Language > java' 카테고리의 다른 글
java 기본 11: 클래스 형변환 (0) | 2023.01.05 |
---|---|
java 기초 10: 추상 클래스(abstract class) (0) | 2023.01.05 |
java 기초 8: 상속 (0) | 2023.01.05 |
java 기초 7: String 클래스 (0) | 2023.01.04 |
java 기초 6: 참조 변수 (0) | 2023.01.04 |