자바에서 접근제어자란?
안녕하세요! 이번 블로그 포스트에서는 자바의 중요한 개념 중 하나인 접근제어자(access modifiers)에 대해 알아보겠습니다. 접근제어자는 클래스, 메소드, 변수 등에 대한 접근 권한을 설정하는 데 사용되며, 코드의 보안성과 캡슐화를 높이는 데 중요한 역할을 합니다.
접근제어자란?
접근제어자는 클래스, 메소드, 변수의 접근 범위를 제어하는 키워드입니다. 자바에서는 네 가지 접근제어자를 제공합니다: public
, protected
, default
(아무 키워드도 사용하지 않은 경우), private
가 그것입니다.
public
public
접근제어자는 해당 멤버가 모든 클래스에서 접근할 수 있음을 의미합니다. 클래스, 메소드, 변수에 사용될 수 있습니다.
public class MyClass {
public int myPublicVar;
public void myPublicMethod() {
// 이 메소드는 모든 클래스에서 접근 가능
}
}
protected
protected
접근제어자는 같은 패키지 내의 클래스와 다른 패키지의 하위 클래스에서 접근할 수 있음을 의미합니다.
public class MyClass {
protected int myProtectedVar;
protected void myProtectedMethod() {
// 이 메소드는 같은 패키지 및 하위 클래스에서 접근 가능
}
}
default (package-private)
접근제어자를 명시하지 않은 경우, 즉 default
접근제어자는 같은 패키지 내에서만 접근할 수 있습니다. 이를 '패키지 전용' 접근이라고도 합니다.
class MyClass {
int myDefaultVar;
void myDefaultMethod() {
// 이 메소드는 같은 패키지 내에서만 접근 가능
}
}
private
private
접근제어자는 해당 멤버가 정의된 클래스 내에서만 접근할 수 있음을 의미합니다. 다른 클래스에서는 접근할 수 없습니다.
public class MyClass {
private int myPrivateVar;
private void myPrivateMethod() {
// 이 메소드는 이 클래스 내에서만 접근 가능
}
}
접근제어자의 사용 예시
접근제어자를 적절히 사용하면 코드의 보안성을 높이고, 클래스 간의 상호작용을 명확히 정의할 수 있습니다. 다음은 접근제어자를 사용한 예시입니다:
public class Person {
// public: 모든 클래스에서 접근 가능
public String name;
// private: 이 클래스 내에서만 접근 가능
private int age;
// public 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// public 메소드
public void displayInfo() {
System.out.println("Name: " + name + ", Age: " + age);
}
// private 메소드
private void incrementAge() {
age++;
}
}
위 예시에서 name
변수와 displayInfo
메소드는 public
으로 선언되어 모든 클래스에서 접근 가능합니다. 반면에 age
변수와 incrementAge
메소드는 private
으로 선언되어 Person
클래스 내에서만 접근할 수 있습니다.
마무리
이번 포스트에서는 자바의 접근제어자에 대해 알아보았습니다. 접근제어자를 적절히 사용하면 클래스의 내부 구조를 감추고, 외부 클래스와의 상호작용을 명확히 정의할 수 있습니다. 이를 통해 코드의 보안성과 유지보수성을 높일 수 있습니다. 다음 시간에는 더 흥미로운 주제로 찾아뵙겠습니다. 읽어주셔서 감사합니다!
'Java' 카테고리의 다른 글
[JAVA]자바에서 getter / setter 함수 사용 (0) | 2024.06.03 |
---|---|
[Java]클래스의 멤버 변수에 데이터를 세팅하는 3가지 방법 (0) | 2024.05.31 |
[Java]생성자 사용법과 생성자 오버로딩 (0) | 2024.05.31 |
[java]자바의 조건문과 반복문의 개념 (0) | 2024.05.31 |
[java] 자바 클래스와 객체 용어의 정의 (0) | 2024.05.31 |