IT 개발/Java

[Java] 자바 - 캡슐화의 이해 및 예제

KADOSHOLY 2022. 6. 29. 21:02
반응형

 

자바 - 캡슐화의 이해 및 예제

 

자바-캡슐화

 

 

자바의 캡술화(Encapsulation)는 객체지향언어의 특징중 하나입니다. 자바는 클래스(class)안에 멤버변수와 멤버함수를 담아 캡슐처럼 보호하고 원하는 만큼만 외부에 오픈하여 사용할 수 있도록 합니다. 여기서는 캡슐화에 대한 개념과 예제를 간략히 살펴보도록 하겠습니다. 

 

 

   목차

  1. 캡슐화란?
  2. 사용예제

 

 

1. 캡슐화란? (Encapsulation)

 

캡슐란 객체의 내부 구조 및 데이터를 캡슐처럼 감싸 외부에서 직접 볼 수 없게 은닉하여 보호하는 것을 말합니다. 

하지만 객체들끼리의 상호작용을 위해서는 일정부분이 외부에 공개되어야 데이터를 주고 받을 수 있습니다.

이를 위해서 클래스와 멤버변수(필드), 멤버함수(메소드)는 외부에서 접근가능한 범위를 지정할 수 있는 접근제어자와 함께 사용됩니다.

 

2022.06.29 - [IT 개발/Java] - [Java] 자바 - 접근제어자 public, private, protected 및 default

 

[Java] 자바 - 접근제어자 public, private, protected 및 default

자바 - 접근제어자 public, private, protected 및 default 자바에서 접근제어자(access modifier)는 클래스와 클래스의 멤버(필드, 메소드, 생성자)를 사용할 때 접근할 수 있는 범위를 지정해 주는 역할을 합

kadosholy.tistory.com

 

멤버변수의 경우 보통 private키워드를 사용하여 외부로부터의 직접적인 접근을 막고, 흔히 getter/setter라 부르는 멤버함수(메소드)를 만들어 사용함으로써 내부 데이터에 제한적 접근을 할 수 있게 합니다. 

  • getter : 외부에서 변수의 데이터를 읽어올때 사용되는 메소드. ex) public int getAge( ) { ... }
  • setter : 외부에서 변수에 데이터를 쓰고자 할 때  사용되는 메소드. ex) public void setAge(int age) { ... }

cf) 이클립스 getter/setter 자동생성 단축키  :  Alt+Shift+S → Generate Getters and Setters... 선택

 

 

 

 

2. 사용예제

 

1) Person 클래스 정의

  1. 멤버변수 age에 private을 사용하여 외부에서의 직접 접근을 제한합니다.
  2. 대신 age에 데이터를 쓰고 읽기위해서, getter와 setter 메소드를 생성해줍니다. 
  3. setter에서는 age에 데이터를 쓰기전, 데이터 유효성 검사 로직을 넣어줄수 있습니다.
public class Person {
	
	private int age;
	
	
	public int getAge() {
		return age;
	}
	
	public void setAge(int age) {
		if (age >= 0) {
			this.age = age;			
		}
	}
}

 

 

2) 객체생성 및 실행

 

외부에서 Person의 인스턴스 p1의 age변수에 접근하기 위해서는 setter와 getter를 이용해서 접근할 수 있습니다.

private키워드와 함께 사용되었기 때문에 p1 변수를 외부에서 직접 접근하는 것은 불가능 합니다.  

  • setter사용  :  p1.setAge(20);
  • getter사용  :  p1.getAge( );
public class HelloWorld {
	public static void main(String[] args) {

		Person p1 = new Person();
		
		p1.setAge(20);
		System.out.println(p1.getAge() + "살 입니다.");
	}
}

 

3) 실행결과

20살 입니다.

 

반응형