반응형
Recent Posts
Recent Comments
관리 메뉴

개발잡부

[java] 은닉화 Encapsulation 본문

JAVA

[java] 은닉화 Encapsulation

닉의네임 2025. 5. 14. 06:50
반응형

**은닉화(Encapsulation)**는 객체 지향 프로그래밍(OOP)의 중요한 원칙 중 하나로, 객체의 상태(데이터)를 외부에서 직접 접근하거나 수정하지 못하도록 감추고(캡슐화), 대신 메소드를 통해 접근할 수 있도록 하는 개념입니다. 이를 통해 객체의 내부 구현을 숨기고, 외부에는 필요한 기능만 제공하는 구조를 만듭니다.

은닉화의 핵심 개념

  1. 데이터 보호: 객체의 내부 데이터를 외부에서 직접 접근하지 못하도록 private 접근 제어자를 사용하여 데이터를 보호합니다.
  2. 공용 메소드 제공: 객체의 내부 데이터에 접근하거나 수정하려면 gettersetter 메소드를 사용해야 하며, 이를 통해 제어가 가능합니다.

은닉화의 특징

  • 정보 숨기기: 객체의 상태를 외부로부터 숨겨, 외부에서 직접적으로 접근하거나 수정할 수 없게 만듭니다.
  • 유효성 검사: 데이터를 설정할 때 유효성 검사를 하거나, 부적절한 값이 들어오는 것을 방지할 수 있습니다.
  • 유지보수 용이성: 데이터가 내부적으로 변경되더라도, 외부에는 그 변경이 영향을 미치지 않도록 보호할 수 있습니다.

은닉화 구현 방법

  • private 접근 제어자: 객체의 데이터 멤버를 private로 선언하여 외부에서 직접 접근할 수 없게 합니다.
  • getter와 setter 메소드: private 변수에 접근하거나 수정하기 위해 메소드를 제공합니다.
public class Person {
    // 데이터 은닉화: 멤버 변수는 private로 선언
    private String name;
    private int age;

    // getter 메소드: private 멤버 변수에 접근할 수 있도록 공개된 메소드
    public String getName() {
        return name;
    }

    // setter 메소드: private 멤버 변수 값을 설정하는 공개된 메소드
    public void setName(String name) {
        this.name = name;
    }

    // getter 메소드
    public int getAge() {
        return age;
    }

    // setter 메소드
    public void setAge(int age) {
        if (age > 0) { // 유효성 검사 추가
            this.age = age;
        } else {
            System.out.println("Age must be positive.");
        }
    }
}

 

장점

  1. 데이터 보호: 객체의 내부 상태가 잘못 변경되는 것을 방지하여 데이터 일관성을 유지할 수 있습니다.
  2. 유효성 검사 가능: 데이터를 설정할 때 유효성 검사를 추가할 수 있어, 잘못된 값이 객체에 설정되는 것을 방지할 수 있습니다.
  3. 유지보수 용이: 내부 구현을 변경해도 외부에 영향을 미치지 않으므로 코드 수정이 용이해집니다.
  4. 복잡성 감소: 외부에서는 객체의 내부 구현을 몰라도 필요한 메소드만을 사용하여 기능을 구현할 수 있습니다.

결론

은닉화는 객체의 내부 상태를 보호하고, 불필요한 세부 사항을 숨기며, 공개된 메소드를 통해 필요한 기능만을 제공함으로써 코드의 안정성유지보수성을 높여주는 중요한 개념입니다.

반응형

'JAVA' 카테고리의 다른 글

[java] 다형성 Polymorphism  (0) 2025.05.14
[java] 추상화 Abstraction  (0) 2025.05.14
[java] 10진수 를 2진수, 8진수, 16진수로 변환하기  (0) 2023.05.15
[java] Spark java tutorial  (0) 2022.06.05
Error querying database  (0) 2022.04.25
Comments