[Java] 접근 제어자, 캡슐화, 정보 은닉, static block

클라우드·2024년 4월 2일
0

Java

목록 보기
5/20
post-thumbnail

7. Access Modifier (접근 제어자)

  • public
    • 이 키워드는 field, method, constructor, class 앞에 붙을 수 있다.
    • package에 상관없이 자유롭게 access할 수 있도록 해주는 접근 제어자
    • class가 public이라고 해서 변수를 마음대로 쓸 수 있는 것이 아니다.
    • 변수 역시 public이어야 한다.
  • default (키워드 아님, 직접 명시하지 않음)
    • field, method, constructor, class에 선언할 수 있다.
    • 같은 package의 다른 class에 의해 사용될 수 있다.
    • 다른 package에서는 못 쓴다.
  • private
    • field, method, constructor에 선언할 수 있다.
    • 해당 field, method, constructor를 같은 class내에서만 access 가능하도록 선언한다.
    • constructor 앞에 붙일 때는 싱글톤 패턴일 때 사용

싱글톤 패턴

public class Singleton {
	// 정적 참조 변수(싱글톤 객체를 담을 변수)
    private static Singleton instance;

    // private 생성자로 외부에서 인스턴스 생성을 막습니다.
    // private 생성자
    private Singleton() {
    }

    // 정적 메서드를 통해 단일 인스턴스를 반환합니다.
    // getInstance()
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

7.1 Encapsulation(캡슐화)

  • class는 객체가 가지고 있는 특징(값), 기능(함수)를 하나의 단위로 묶어놓은 개념이다.
  • class가 encapsultation한 결과이다.

7.2 Information Hiding(정보 은닉)

  • 이런 class 안에는 값과 기능이 들어가 있다.
  • 여기서는 값이 더 중요하다.
  • 외부에서 이 값을 함부로 변경하는 것은 당연히 막아야 한다.
  • 그래서 class 내부에서만 값을 수정할 수 있고, 외부에서 함부로 값을 변경할 수 없도록 데이터를 보호해야 하는데 이 개념을 Information Hiding(정보 은닉)이라고 한다.

7.3 구현 방법

  • Java 언어에서는 이 개념을 access modifier로 구현한다.
  • private를 이용해서 field를 선언한다. (특별한 이유가 없는 한)
  • method를 이용해서 해당 field를 제어하는 식으로 class를 design을 한다.
  • 추가적으로 외부 class(instance)에서 private으로 설정된 값을 알아가거나 설정하기 위해 특수한 형태의 method를 이용하게 되는데 getter / setter 이라고 한다.

8. static block

  • class가 로드된 후 바로 수행되는 코드 block이고 main()보다 먼저 수행된다.
profile
안녕하세요 :)

0개의 댓글