Language/Java

[Java] public, private, protected, default 접근제한자

서리★ 2024. 4. 30. 10:19

1. 접근 제한자

1) 접근 제한자 정의

접근 제한자(access modifier)는 클래스, 변수, 메서드 등의 멤버에 대한 접근을 제어하는 데 사용된다. 즉, 어떤 클래스의 외부에서 해당 멤버에 접근할 수 있는지를 결정한다.

 

2) 접근 제한자 사용하는 이유

  1. 코드의 안정성: 접근 제한자를 사용하면 외부에서 클래스의 내부 구현에 직접 접근하는 것을 방지할 수 있다. 이는 클래스의 내부 상태를 외부에서 잘못된 방식으로 변경하는 것을 방지하고, 코드의 일관성과 안정성을 유지할 수 있도록 도와준다.
  2. 유지보수성: 접근 제한자를 사용하면 클래스의 내부 구현을 캡슐화할 수 있다. 이는 클래스를 수정하거나 변경할 때 다른 부분에 영향을 덜 주며, 코드의 유지보수성을 향상시킨다.
  3. 보안성: 접근 제한자를 사용하면 민감한 정보나 중요한 기능에 대한 접근을 제어할 수 있다. 외부에서 접근할 필요가 없는 기능이나 변수에 대해서는 접근을 제한함으로써 보안을 강화할 수 있다.
  4. 의도 표현: 접근 제한자를 사용하면 클래스나 메서드를 정의할 때 해당 요소의 접근 범위를 명시적으로 표현할 수 있다. 이는 코드를 읽는 사람에게 해당 요소의 의도를 명확하게 전달할 수 있도록 도와준다.

 

3) 접근 제한자 사용처

  1. Class(클래스) : 클래스 선언부에 접근 제한자를 사용하여 해당 클래스의 접근 범위를 지정할 수 있다.
    public, default(package-private) 두 가지 접근 제한자를 사용할 수 있다.
  2. Variable(변수), Field(필드): 클래스 내의 변수(필드)에도 접근 제한자를 사용하여 해당 변수의 접근 범위를 지정할 수 있다.
    public, protected, default(package-private), private 네 가지 접근 제한자를 사용할 수 있다.
  3. Constructor(생성자) : 생성자에도 접근 제한자를 사용하여 해당 생성자의 접근 범위를 지정할 수 있다.
    public, protected, default(package-private), private 네 가지 접근 제한자를 사용할 수 있다.
  4. Method(메서드) : 메서드 선언부에 접근 제한자를 사용하여 해당 메서드의 접근 범위를 지정할 수 있다.
    public, protected, default(package-private), private 네 가지 접근 제한자를 사용할 수 있다.
Class만 public과 default(package-private)만 사용 가능
Variable(Field), Constructor와 Method는 public, protected, default(package-private)와 private 모두 사용 가능

 

// 패키지 com.example에 위치한 MyClass.java 파일
package com.example;

public class MyClass {
    public int publicVar = 10;
    protected int protectedVar = 20;
    int defaultVar = 30; // package-private
    private int privateVar = 40;
}