접근제어자에서 캡슐화와 은닉화 차이점 알고 가기.

접근 제어자

  • 클래스내부의 필드나, 메서드 등에 대한 접근 범위를 지정할 수 있게 해주는 키워드
  • 외부로부터의 불필요한 접근을 제한 할 수 있다 (결합도를 낮춤)
  • OOP의 캡슐화와 관련이 있다

    제어자 동일 클래스 동일 패키지 하위 클래스 다른 클래스
    public O O O O
    protected O O O X
    default O O X X
    private O X X X

    public

    • 언제나 공개. 모든 클래스에서 접근 가능

    protected

    • 내부에서는 접근이 가능하고, 외부는 접근 불가능하나 상속이 가능
    • 부모 클래스에 대해서는 public 멤버처럼 취급
    • 외부에서는 private 멤버처럼 취급
    • 배포시 고려해야할 사항

    default

    • 동일한 패키지 내(프로젝트 내)에서는 모두 접근이 가능
    • 접근 제어자는 따로 존재하지 않으므로 지정하지 않으면 자동으로 default 를 가짐
    • 배포시 고려할 사항

    private

    • 클래스 내부의 정보를 외부에 공개하지 않음
    • 같은 클래스내의 멤버들만 접근이 가능
    • 직접 접근이 안되며, 해당 객체의 public 메소드를 통해서 접근


추가질문

캡슐화

  • 객체 내부의 데이터(필드)와 기능(메서드)를 하나로 묶고,
  • 외부에서는 필요한 인터페이스만 제공하여 내부의 구현을 숨기는 것
  • 객체지향 원칙
  • 코드의 유지보수성, 안정성, 재사용성을 높여준다

    public class User {
      private String name; // 외부에서 직접 접근 불가
    
      public String getName() {
        return name;      // getter를 통해 안전하게 접근
      }
    
      public void setName(String name) {
          this.name = name; // setter로 유효성 검사 등 가능
      }
    }
    

은닉화

  • 불필요하거나 민감한 정보를 외부로부터 감추는 것을 의미한다
  • 내부 구현 로직과 상태를감추고, 외부에서는 필요한 기능만 사용할 수 있도록 제한한다
  • 예: 비밀번호를 저장시 private String password;

정리 및 비교

  • 접근제어자캡슐화를 구혆(데이터 보호)하고,
  • 은닉화로 외부로부터 내부 로직을 숨긴다.

    개념 설명 관계
    접근 제어자 멤버의 접근 범위를 지정해주는 도구 캡슐화와 은닉화의 구현 수단
    캡슐화 데이터와 기능을 묶고, 필요한 인터페이스만 외부에 제공 은닉화의 프로그래밍 방식
    은닉화 내부 정보는 숨기고, 외부에는 필수 기능만 노출하는 개념 캡슐화의 목적

댓글남기기