Java - 캡슐화

HY SONG·2023년 2월 27일
0

Java

목록 보기
5/15

객체 지향 프로그래밍의 기본 원칙 - 캡슐화


캡슐화란?

관련된 데이터와 기능을 하나의 단위로 묶어서 외부로부터의 접근을 제한하는 것

내부 - 객체의 필드와 메서드
외부 - 캡슐의 인터페이스(메서드)를 통해 객체와 상호작용

캡슐화의 효과

  • 객체의 내부 구현이 외부에 노출되지 않는다
  • 객체 간의 결합도를 낮추고 유연성과 확장성을 높일 수 있다


캡슐화의 특징

정보 은닉

객체의 내부 데이터와 구현 세부 사항을 외부에 노출하지 않고, 객체의 인터페이스(메서드)를 통해만 접근 가능하도록 제한하는 것

정보 은닉을 통해 객체 간의 결합도를 낮출 수 있다.

코드 재사용

객체의 내부 데이터와 구현 세부 사항을 숨기고, 외부에서는 객체의 인터페이스를 통해서만 접근할 수 있으므로 코드 재사용성을 높일 수 있음



캡슐화에 쓰이는 접근 제어자의 종류

캡슐화를 구현하기 위해 Java에서는 네 가지 접근 제어자를 제공한다

접근 제어자접근 제한 범위
private동일 클래스
default동일 패키지
protected동일 패키지 + 상속받은 하위 클래스
public접근 제한 없음

접근 제어자를 이용하여 적절히 캡슐화를 구현하면 객체의 내부 데이터와 기능을 외부에 노출하지 않아도 되므로, 객체 간의 결합도를 낮출 수 있다.



캡슐화에 쓰이는 메서드

Getter과 Setter 메서드를 통해서 객체의 인스턴스 변수에 직접 접근하는 것을 막고, 캡슐화를 구현할 수 있다.

Getter

객체의 인스턴스 변수를 반환하는 메서드로, 메서드의 이름은 get으로 시작한다

인스턴스 변수로 name이 있다면, name 변수의 Getter 메서드는 getName()

public class Person {
    private String name;
    private int age;
    
    public String getName() {
        return name;
    }
    
    public int getAge() {
        return age;
    }
}

Setter

객체의 인스턴스 변수에 값을 할당하는 메서드로, 메서드의 이름은 set으로 시작한다

public class Person {
    private String name;
    private int age;
    
    public void setName(String name) {
        this.name = name;
    }
    
    public void setAge(int age) {
        this.age = age;
    }
}

0개의 댓글