자바 캡슐화
객체 지향 프로그래밍 방법에서 캡슐화(영어: Encapsulation)는 추상 기능 인터페이스의 구현 세부 사항을 부분적으로 패키징하고 숨기는 방법을 말합니다.
캡슐화는 외부 클래스에서 정의한 코드가 클래스의 코드와 데이터에 무작위로 액세스하는 것을 방지하는 보호 장벽으로 생각할 수 있습니다.
이 클래스의 코드와 데이터에 액세스하려면 엄격한 인터페이스 제어를 통과해야 합니다.
캡슐화의 주요 기능은 코드를 호출하는 프로그램 조각을 수정하지 않고도 자체 구현 코드를 수정할 수 있다는 것입니다.
올바른 캡슐화는 프로그램 코드를 더 쉽게 이해하고 유지 관리할 수 있게 하며 프로그램 코드의 보안도 강화할 수 있습니다.
Example
Java 캡슐화된 클래스의 예를 살펴보겠습니다.
/* 文件名: EncapTest.java */ public class EncapTest{ private String name; private String idNum; private int age; public int getAge(){ return age; } public String getName(){ return name; } public String getIdNum(){ return idNum; } public void setAge( int newAge){ age = newAge; } public void setName(String newName){ name = newName; } public void setIdNum( String newId){ idNum = newId; } }
위의 예에서 공용 메소드는 외부 클래스가 이 클래스의 멤버 변수에 액세스하는 입구입니다.
일반적으로 이러한 메서드를 getter 및 setter 메서드라고 합니다.
따라서 클래스의 비공개 멤버 변수에 액세스하려는 모든 클래스는 이러한 getter 및 setter 메서드를 거쳐야 합니다.
다음 예제에서는 EncapTest 클래스의 변수에 액세스하는 방법을 보여줍니다.
/* F文件名 : RunEncap.java */ public class RunEncap{ public static void main(String args[]){ EncapTest encap = new EncapTest(); encap.setName("James"); encap.setAge(20); encap.setIdNum("12343ms"); System.out.print("Name : " + encap.getName()+ " Age : "+ encap.getAge()); } }
위 코드의 컴파일 및 실행 결과는 다음과 같습니다.
Name : James Age : 20