지난번 자바 클래스(class) / 객체(Object)와 인스턴스(Instance)에 이어서
이번글에서는 접근제한자(Access modifier)에 대해서 알아보겠습니다.
여러분들은 자바를 하면서 public이 무엇을 뜻하는지 생각해 보신 적 있나요?
다음 글에서 살펴볼 캡슐화를 알기 위해서는
접근제한자(Access modifier)에 대해서 알아야 합니다.
우리가 쉽게 접할 수 있는 접근제한자(Access modifier)에는 public이
있고 이외에도 private과 protected가 있습니다.
protected는 상속(inherit)의 개념을 알아야 하기에
여기서는 public과 private만 다루어보도록 하겠습니다.
public
먼저 접근제한자 public에 대해서 알아보겠습니다.
public class, public void, public int... 등과 같이 접근제한자는
클래스와 메소드, 변수 앞에 붙어서 어디까지 접근이 가능한지 나타내주는
역할을 합니다.
public의 경우 외부 패키지에서 자유롭게 접근 및 사용이 가능합니다.
private
private의 경우 public과 다르게 외부에서 접근 및 사용이 불가능합니다.
따라서 선언된 클래스 내에서만 사용이 가능합니다.
정리해 보자면 public은 어디서든지 접근 및 사용이 가능하고
private은 선언된 클래스 내에서만 접근 및 사용이 가능합니다.
예를 들어 private int a = 5; 라는 변수가 number 클래스 내부에서
선언되었다면 또 다른 클래스인 soda 클래스가 있다고 가정할 때
soda 클래스에서는 사용이 불가능합니다.
만약 어떤 접근제한자도 지정하지 않는다면 기본값이 어떻게 될까요?
접근제한자를 지정하지 않으면 같은 패키지에 소속된 클래스 내에서만
사용할 수 있습니다.
안전한 코드를 위해서 사용용도에 따라 지정하는 것을 추천드립니다.
private을 사용하는 이유에 대해서 잠시 알아보겠습니다.
class Doorlock{
int password;
boolean isLocked;
Doorlock(int password){
this.password = password;
this.isLocked = true; // 초기 도어락 잠금상태
}
public void Unlock(int pass){
if(pass == password){
this.locked = false; // 비밀번호 일치시 도어락 오픈
System.out.println("Door open");
}else{
System.out.println("incorrect password");
}
}
}
public class Unlock{
public static void main(String[] args){
Doorlock d = new Doorlock(1111);
// 초기 비밀번호 1111 설정
d.Unlock(1234);
// incorrect password
// 하지만 password가 private이 아니기때문에
// 직접 접근가능
d.password = 1234;
d.Unlock(1234);
// Door open
}
}
위 예시를 실행시켜 보면 private으로 변수를 지정해주지 않아
쉽게 접근하여 변경하는 것을 확인해 볼 수 있습니다.
따라서 유저가 변경하거나 접근하면 안 되는 변수, 메소드, 클래스들은
접근제한자를 private으로 설정해 주는 것이 중요합니다.
지금까지 접근제한자 public, private에 대해서 알아보았습니다.
다음 글에서는 캡슐화(Encapsulation)에 대해서 알아보겠습니다.
'자바(JAVA) 기초 함께 알아보자' 카테고리의 다른 글
자바(JAVA) 기초 함께 알아보자(16) - ArrayList(배열) (0) | 2024.10.07 |
---|---|
자바(JAVA) 기초 함께 알아보자(15) - 캡슐화(Encapsulation) (4) | 2024.10.05 |
자바(JAVA)기초 함께 알아보자(13) - 자바 클래스(class) / 오브젝트&인스턴스(object & instance) (2) | 2024.09.29 |
자바(JAVA) 기초 함께 알아보자(12) - Scanner클래스 와 입력 (0) | 2024.09.28 |
자바(JAVA) 기초 함께 알아보자(11) - 반복문의 continue/break (2) | 2024.09.27 |