[TIL] 2024-12-06_접근 제어자

Yuri·2024년 12월 6일

TIL

목록 보기
2/59
post-thumbnail

📕 Today I Learned - 오늘 내가 공부한 것을 정리합니다.

1. 접근 제어자

접근 제어자 이해1

자바는 public, private 같은 접근 제어자를 제공한다.
접근 제어자를 사용하면 해당 클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한할 수 있다.

접근 제어자 이해2

Speaker - volume 접근 제어자를 private으로 수정

package access;

public class Speaker {
    private int volume;

    Speaker(int volume){
        this.volume = volume;
    }

    void volumeUp() {
        if(volume >= 100){
            System.out.println("음량을 증가할 수 없습니다. 최대 음량입니다.");
        } else {
            volume += 10;
            System.out.println("음량을 10 증가합니다.");
        }
    }

    void volumeDown() {
        volume -= 10;
        System.out.println("volumeDown 호출");
    }

    void showVolume() {
        System.out.println("현재 음량 : " + volume);
    }
}

  • SpeakerMain 에서 volume 필드에 접근하는 경우

    ⚠️ 컴파일 오류 발생 : ‘volume’은 private 으로 설정되어 있기 때문에 외부에서 접근할 수 없다는 오류

접근 제어자 종류

자바의 4가지 종류의 접근 제어자

  • private : 모든 외부 호출을 막는다.
  • default(package-private) : 같은 패키지안에서의 호출은 허용한다.
  • protected : 같은 패키지안에서 호출은 허용한다. 패키지가 달라도 상속 관계의 호출은 허용한다.
  • public : 모든 외부 호출을 허용한다.

정리(차단→허용): private → default → protected → public

접근 제어자 사용 위치

접근 제어자는 필드와 메서드, 생성자에 사용된다.
추가로 클래스 레벨에도 일부 접근 제어자를 사용할 수 있다.

접근 제어자의 핵심은 속성과 기능을 외부로부터 숨기는 것이다.

  • private은 나의 클래스 안으로 속성과 기능을 숨길 때 사용, 외부 클래스에서 해당 기능을 호출할 수 없다.
  • default는 나의 패키지 안으로 속성과 기능을 숨길 때 사용, 외부 패키지 안에서 해당 기능을 호출할 수 없다.
  • protected는 상속 관계로 속성과 기능을 숨길 때 사용, 상속 관계가 아닌 곳에서 해당 기능을 호출할 수 없다.
  • public은 기능을 숨기지 않고 어디서든 호출할 수 있게 공개한다.

2. 캡슐화

캡슐화(Encapsulation)는 객체 지향 프로그래밍의 중요한 개념 중 하나다. 캡슐화는 데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어서 외부에서의 접근을 제한하는 것을 말한다. 캡슐화를 통해 데이터의 직접적인 변경을 방지하거나 제한할 수 있다.

💊 캡슐화는 쉽게 이야기해서 속성과 기능을 하나로 묶고, 외부에 꼭 필요한 기능만 노출하고 나머지는 모두 내부로 숨기는 것이다.

접근 제어자와 캡슐화를 통해 데이터를 안전하게 보호하는 것은 물론이고, BankAccount 를 사용하는 개발자 입장에서 해당 기능을 사용하는 복잡도도 낮출 수 있다.


💭 오늘 강의 내용을 톺아보며 중요한 개념을 뽑아보았다. 접근 제어자는 앞으로 코딩하며 계속 만나게 될테니 머리에 새겨넣자. 오늘로 사전캠프의 3주차가 끝났다. 아직 본 캠프까지 시간이 남았으니 그 전까지 자바 강의를 1회독하고 내용 정리를 하고 갈 수 있도록 꾸준히 해야겠다.

profile
안녕하세요 :)

0개의 댓글