본문 바로가기
개발/JAVA

[JAVA] 접근 제어자 (Access Modifier) 에 대하여

by seopport 2023. 9. 16.
728x90
반응형

접근 제어자(Access Modifier) 이란?

접근 제어자(Access Modifier)는 프로그래밍 언어에서 클래스, 메서드, 변수 등의 멤버에 대한 접근 권한을 제어하는 키워드입니다. 이것은 코드의 가시성과 보안을 관리하며, 다른 부분에서의 접근을 제한합니다. 주로 Java와 같은 객체 지향 프로그래밍 언어에서 사용됩니다.

 

다양한 접근 제어자가 있으며, 일반적으로 사용되는 접근 제어자를 순차적으로 설명드리도록 하겠습니다.

 

JAVA-접근제어자?
JAVA-접근제어자?

 

Public

  • 어디서든 접근 가능한 가장 개방적인 접근 제어자입니다.
  • public 접근 제어자가 붙은 변수나 메서드는 어떤 클래스에서도 접근이 가능합니다.

 

PublicSeo.java

package seo;

public class PublicSeo {
    protected String lastName = "Seo";
    public String info = "this is public message.";
}

 

PublicMain.java

import seo.PublicSeo;

public class PublicMain {
    public static void main(String[] args){
        PublicSeo publicSeo = new PublicSeo();
        System.out.println(publicSeo.info);
    }
}

 

Protected

  • 동일 패키지의 클래스 또는 서브 클래스(해당 클래스를 상속받은 클래스)에서 접근이 가능합니다.

 

Protected.java

package seo; //다른 패키지

public class Protected {
    protected String lastName = "seo";
}

 

ProtectedMain.java

package seo.youn; // 다른 패키지

import seo.Protected;

public class ProtectedMain extends Protected {
    public static void main(String[] args){
        ProtectedMain proM = new ProtectedMain();
        System.out.println(proM.lastName);
    }
}

 

Default

  • 동일 패키지 안에서만 접근이 가능합니다.
  • 접근 제어자를 별도로 설정하지 않는다면 변수나 메서드는 default 접근 제어자가 자동으로 설정됩니다.

 

Default.java

package seo;

public class Defualt {
    String lastName = "Seo";
}

 

DefaultMain.java

/*
접근 제어자를 별도로 설정하지 않는다면 변수나 메서드는 
default 접근 제어자가 자동으로 설정되어 동일한 패키지 안에서만 접근이 가능하다.
*/

package seo;

public class DefaultMain {
    String lastName = "Youn";

    public static void main(String[] args) {
        Default seo = new Default();
        System.out.println(seo.lastName);
    }

}

 

Private

  • 해당 클래스 안에서만 접근이 가능하다.

 

Private.java

/*
접근제어자가 private 으로 설정되었다면 
private 가 붙은 변수나 메서드는 해당 클래스 안에서만 접근이 가능하다.
*/

public class Private {
    private String secret;

    private String getSecret() {
        return this.secret;
    }
}

 

이러한 접근 제어자는 코드를 더 모듈화하고 유지 보수를 쉽게 만듭니다. 
또한 정보 은닉과 캡슐화를 실현하며, 객체 지향 프로그래밍의 핵심 원칙 중 하나인 "최소 지식 원칙"을 지원합니다.
이는 다른 클래스가 객체의 내부 구현 세부 정보를 알 필요가 없다는 원칙입니다.

 

728x90
반응형