카테고리:

업데이트:

1. 들어가기

우리는 Java 기초 문법을 배우면서 ‘접근 제한자’ 라는 것을 배운 적 있습니다.

접근 제한자란, 외부에서 클래스 또는 인터페이스의 멤버 접근을 제한할 때 사용하는 키워드로

public, default, protected, private 4개의 접근 제한 키워드가 있습니다.

이번 포스트에서는 4가지 접근 제한자 중 ‘private’에 대해 다뤄보겠습니다.

2. Private

Private 접근 제한자는 동일 클래스 내의 멤버만 접근 가능하도록 만드는 키워드입니다.

그렇기 때문에 외부에서의 클래스 또는 인터페이스의 멤버 접근이 불가능합니다.

개발을 하다보면 해당 클래스의 인스턴스를 만들지 못하도록 하는 경우가 있습니다.

Item 1에서 배운 정적 팩터리 메서드 또한 그 예시입니다.

  public class Person {
    String name, gender;

    // 인스턴스화 방지
    private Person() {}

    public static Person create(String name, String gender) {
        Person person = new Person();

        person.name = name;
        person.gender = gender;

        return person;
    }
  }

이 때, 생성자의 접근 제한자를 private으로 설정하는데

이렇게 하면 Person 클래스의 인스턴스화를 막을 수 있습니다.

또한, 클래스의 상속을 막기 위해서는 final 키워드를 사용하는 방법도 있지만

생성자를 private으로 선언해 클래스의 상속을 막는 방법도 있습니다.

모든 생성자는 명시적이든, 묵시적이든 항상 상위 클래스의 생성자를 호출하는데

이를 private으로 선언하면 하위 클래스가 상위 클래스의 생성자에 접근할 수 없기 때문입니다.

3. 정리

이번 포스트는 4가지의 접근 제한자 중 private에 대해서 알아보았습니다.

private 접근 제한자는 외부에서의 클래스 또는 인터페이스의 멤버 접근이 불가능하도록 만드는 키워드로

이를 생성자에 사용한다면 클래스의 인스턴스화를 막는 동시에

해당 클래스의 상속을 막는 효과도 있다는 것을 알게 되었습니다.

클래스의 무분별한 인스턴스화를 막아야 할 때,

private 접근 제한자를 통해 외부에서의 직접 접근을 막아봅시다.

            
              📕 개인 기록용 블로그입니다.
              😊 오타나 잘못된 정보가 있을 경우 댓글이나 메일로 말씀해주시면 바로 수정하겠습니다! 😊
          

댓글남기기