본문 바로가기

Java

[Java]자바에서 접근제어자란?

 

자바에서 접근제어자란?

안녕하세요! 이번 블로그 포스트에서는 자바의 중요한 개념 중 하나인 접근제어자(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 클래스 내에서만 접근할 수 있습니다.

마무리

이번 포스트에서는 자바의 접근제어자에 대해 알아보았습니다. 접근제어자를 적절히 사용하면 클래스의 내부 구조를 감추고, 외부 클래스와의 상호작용을 명확히 정의할 수 있습니다. 이를 통해 코드의 보안성과 유지보수성을 높일 수 있습니다. 다음 시간에는 더 흥미로운 주제로 찾아뵙겠습니다. 읽어주셔서 감사합니다!