Notice
Recent Posts
Recent Comments
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Spring & Java

객체지향 PART 1 - 캡술 (접근제어자) 본문

JAVA 객체지향 이해하기

객체지향 PART 1 - 캡술 (접근제어자)

dev.hyuck 2025. 12. 10. 17:32

● 메서드 - 모듈화의 시작

● 클래스와 객체

● JVM 메모리 영역

● 래퍼클래스 (기본형 참조형)

● static - 클래스가 공유

● final - 변하지 않는 값

● 인터페이스 - 표준화의 시작

● 객체지향 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"); // ✅ 세터를 활용해 접근, 변경가능
    }
}