Spring & Java
객체지향 PART 1 - 캡술 (접근제어자) 본문
● 객체지향 PART 2 - 상속
● 객체지향 PART 3 - 추상화
● 객체지향 PART 4 - 다형성
객체지향 PART 1 - 캡술 (접근제어자)
객체지향의 4가지 특징 PART 1
캡슐화 - 데이터의 보호
상속 - 재사용성과 확장
추상화 - 데이터의 계층적 표현
다형성 - 객체지향의 꽃
학습 키워드 점검
캡슐화 - 캡슐처럼 데이터를 보호하는 개념
정보은닉 - 객체 내부데이터를 숨기는 개념
접근제어자 - 클래스, 변수, 메서드의 접근 범위를 제어하는 기술
무분별한 세터 - 의미있게 세터를 활용하는 방법
캡슐화 ( Encapsulation ) 란?
캡슐화란 무엇인지 알아보자

● 객체의 정보를 외부에서 직접 접근하지 못하게 보호하는 개념 입니다.
● 캡슐처럼 감싸서 내부를 보호하고 외부로부터 내용물을 숨기고 있는 모습에서 유래 됐습니다.
● 클래스 혹은 객체의 캡슐화는 접근제어자를 통해서 구현할 수 있습니다.
캡슐화가 왜 필요할까요?
캡슐화가 필요한 이유를 알아봅시다.
● 예를들어, 누군가가 이름이나 나이를 마음대로 변경할 수 있다면 어떨까요?
● 가문의 비밀처럼 외부에 노출하고 싶지 않은 정보가 있을 수도 있습니다.
● 캡슐화를 통해 이러한 정보를 보호하고 필요한 경우에만 안전하게 접근할 수 있도록 합니다.
● 캡슐화를 구현하기 위해서는 접근제어자를 이해해야 됩니다.
접근제어자 ( Access Modufuer )
접근제어자가 무엇인지 알아봅시다.
● 접근제어자는 클래스, 변수, 메서드, 생성자의 접근 범위를 제한하는 키워드입니다.
● 캡슐화 구현을 위해 사용됩니다.


접근제어자 활용 예시 ( public, private )
public class Person { // ✅ 외부에서 접근 불가
public String name; // ✅ 외부에서 접근 불가
private String secret; // ❌ 외부에서 접근 불가
public Person() {} // ✅ 외부에서 접근 불가
public void methodA() {} // ✅ 외부에서 접근 가능
private void methodB() {} // ❌ 외부에서 접근 불가
}
Person person = new Person(); // ✅ 접근가능 생성자가 public
person.name; // ✅ 접근가능 변수가 public
person.secret; // ❌ 접근불가능 변수가 private
person.methodA(); // ✅ 접근가능 메서드가 public
person.methodB(); // ❌ 접근불가능 메서드가 private
데이터 접근 - 게터 ( Getter )와 세터 ( Setter )

캡슐화가 된 데이터에 접근 방법
● 캡슐화가 잘 적용된 클래스는 내부 데이터를 private으로 보호하고 있습니다.
● 데이터 조회나 변경이 필요한 경우 안전한 접근방법이 필요합니다.
● 그 역할을 수행하는 메서드가 바로 게터 ( Getter ) 와 세터 ( Setter ) 입니다.
게터 ( Getter ) 활용법
● 데이터를 안전하게 접근하기 위해 사용됩니다.
public class Person {
private String secret;
public String getSecret() {
return this.secret; // ✅ 객체의 secret 속성 반환
}
}
public class Main {
public static void main(String[] args) {
Person p1 = new Person();
p1.secret; // ❌ 직접 접근 불가능
String newSecret = p1.getSecret(); // ✅ 게터를 활용해 접근가능
}
}
세터 ( Setter ) 활용법
● 데이터를 안전하게 설정/변경하기 위해 사용됩니다.
public class Person {
private String secret;
public void setSecret(String secret) {
this.secret = secret; // ✅ secret 속성 설정 및 변경
}
}
public class Main {
public static void main(String[] args) {
Person p1 = new Person();
p1.secret = "password"; // ❌ 직접접근, 변경 불가능
p1.setSecret("newPassword"); // ✅ 세터를 활용해 접근, 변경가능
}
}
'JAVA 객체지향 이해하기' 카테고리의 다른 글
| 객체지향 PART 3 - 추상화 (0) | 2025.12.10 |
|---|---|
| 객체지향 PART 2 - 상속 (1) | 2025.12.10 |
| 인터페이스 - 표준화의 시작 (0) | 2025.12.10 |
| final - 변하지 않는 값 (0) | 2025.12.10 |
| Static - 클래스가 공유하는 공간 (1) | 2025.12.09 |