접근 제한자 및 데이터 은닉과 보호

mingggkeee·2022년 1월 20일
0

Java

목록 보기
3/20

제한자(modifier)

  • 클래스, 변수, 메서드 선언부에 함께 사용되어 부가적인 의미 부여
  • 종류
    • 접근 제한자 : public, protected, (default=package), private
    • 그 외 제한자
      • static : 클래스 레벨의 요소 설정
      • final : 요소를 더이상 수정못하게 함
      • abstract : 추상 메서드 및 추상 클래스 작성
      • synchronized : 멀티스레드에서의 동기화 처리
  • 하나의 대상에 여러 제한자를 조합 가능하나 접근 제한자는 하나만 사용 가능

final

  • 마지막, 더 이상 바뀔 수 없음.
  • 용도
    • final class - 더이상 확장 할 수 없음: 상속 금지 -> 오버라이드 금지
    • final method - 더 이상 재 정의할 수 없음 : 오버라이딩 금지
    • final variable - 더 이상 값을 바꿀 수 없음 : 상수화

데이터 은닉과 보호(Encapsulation)

  • 정보를 보호하기 위한 대책은???
    • 변수는 private 접근으로 막기
    • 공개되는 메서드를 통한 접근 통로 마련 : getter / setter !!!
      • 메서드에 정보 보호 로직 작성

객체의 생성 제어와 Singleton 디자인 패턴

  • 여러개의 객체가 필요 없는 경우

    • 객체를 구별할 필요가 없는 경우 = 수정 가능한 멤버 변수가 없고 기능만 있는 경우
    • 이런 객체를 stateless한 객체라고 함.
  • 객체를 계속 생성/삭제 하는데 많은 비용이 들어서 재사용이 유리한 경우

  • Singleton 디자인 패턴

    • 외부에서 생성자에 접근 금지 -> 생성자의 접근 제한자를 private로 설정
    • 내부에서는 private에 접근 가능하므로 직접 객체 생성 -> 멤버 변수이므로 private 설정
    • 외부에서 private member에 접근 가능한 getter 생성 -> setter는 불필요
    • 객체 없이 외부에서 접근할 수 있도록 getter 변수에 static 추가
    • 외부에서는 언제나 getter를 통해서 객체를 참조하므로 하나의 객체 재사용
profile
만반잘부

0개의 댓글