Back End/JAVA

접근 제한자에 대하여

KoesJin 2025. 1. 9. 00:00

⭐️ 접근 제한자란 ? 

접근 제한자란 클래스 , 메서드 , 변수 등에 대한 접근 권한을 제한하여 코드의 보안성과

"캡슐화"를 강화하는데 사용된다.

 

접근 제한자의 종류는 크게 4가지가 있다 . (public , protected , default , private)

 

우선 public부터 알아 보자.

 

 


 

⭐️ public  

public은 어디서든 접근 가능하다.

같은 클래스 , 다른 클래스 , 모든 곳에서 접근이 가능하므로 가장 개방적인 접근 제한자이다.

 

[ public 사용 예제 ]

public class Run {
    public int a;
    public int b;
}

OR

public class Run {
    public static void main(String[] args) {
        
    }
}

 

위 코드와 같이 

접근제한자 (static) 반환타입 클래스( (매개변수) ){

 

}

 

로 클래스를 선언 할 수 있는데 , public이라고 하면 다른 패키지에 있는 클래스를 import하여

사용하거나 , 같은 패키지라면 import를 생략하고 사용 할 수 있다 ‼️

 

 

패키지 목록

 

a 패키지이던 b 패키지이던 상관없이 public인 클래스는 import하여 사용 가능 ‼️

 


 

⭐️ protected

같은 패키지 내에서는 자유롭게 접근 가능 하고

다른 패키지에서는 해당 클래스를 상속받은 클래스만 접근 가능하다.

 

[ protected 사용 예제 ]

ex) 패키지 Example1

public class Example {
    protected String name;

    protected void display() {
        System.out.println("This is protected.");
    }
}

ex) 패키지 Example2

class SubExample extends Example {
    public void changeName() {
        this.name = "New Name"; // 접근 가능
    }
}

 

위 두 코드가 패키지가 다르지만 상속관계라면 Example1의 name에 접근이 가능하다 ‼️

 

 


 

⭐️ default

같은 패키지 내에서만 접근 가능.

 

다른 패키지에서는 접근 불가 ❌

 

특정 패키지에서만 사용하는 클래스나 메서드를 선언할 때 사용한다.

 

[ default 예제 ]

class Example {
    String name; // default 접근 제한자

    void display() {
        System.out.println("This is default.");
    }
}

 

위 코드와 같이 접근제어자가 생략된것은 모두 default가 생략된 것이다.

 

default는 같은 패키지에서만 접근 가능 ‼️

 

 


 

 

⭐️ private

private은 같은 클래스 내부에서만 접근 가능 하고 , 다른 클래스나 상속받은 클래스에서도

접근 불가 하며 가장 제한적인 접근 수준이다.

 

그렇기때문에 정보 은닉을 할 수 있다 ‼️

 

[ private 사용 예제 ]

public class Example {
    private String name;

    private void display() {
        System.out.println("This is private.");
    }

    public void setName(String name) {
        this.name = name; // 클래스 내부에서만 수정 가능
    }
}

 

위에 작성한 public , protected , default 를 사용한 예제에서 해당 Example에 있는 name과,

display() 메서드를 사용할 수 없다.

 

그 이유는 private을 사용하여 같은 클래스에서만 사용할 수 있게 제한을 두었기 때문이다 ‼️

 


접근 제한자의 종류와 접근 제한자를 사용하는 이유를
생각하여 무조건 public으로 다 허용하는 것이 아닌
필요에 따라 정보를 은닉하는 것이 중요하다 ‼️