Archives
Recent Posts
«   2025/05   »
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 31
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[6일차 Java] 캡슐화 본문

Computer/Java

[6일차 Java] 캡슐화

Wise-99 2023. 5. 5. 20:24

 

 

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT

 

 

 

📖 캡슐화란?

  • 변수에 대한 직접 접근을 막음으로써 데이터의 무결성을 보장할 수 있도록 개발하는 방식을 의미한다.
  • 변수의 직접 접근을 막기 위해 private 접근 제한자를 붙여준다.
  • 변수에 값을 저장하는 것을 객체 생성시 한 번만 허용하겠다면 생성자를 통해 할 수 있도록 제공한다.
  • 변수에 값을 저장하는 것을 원하는 만큼 할 수 있도록 하게 해주겠다면 setter를 만들어 제공한다.
  • 변수의 값을 가져다 사용할 수 있는 것을 할 수 있도록 하게 해주겠다면 getter를 만들어 제공한다.
    • setter의 이름짓는 규칙 : set변수명
    • getter의 이름짓는 규칙 : get변수명, is변수명(boolean)
  • 이클립스 자동 생성 : 상단 메뉴 > Source > Generate Getters and Setters
    이클립스 getter, setter 자동 생성 메뉴

📖 예제 코드

public class MainClass {

	public static void main(String[] args) {
		
		TestClass1 t1 = new TestClass1(200);
		t1.printValue(); // 100, 200

		t1.setMemberC(300);
		System.out.printf("t1 memberC : %d\n", t1.getMemberC()); // 300

		t1.setMemberC(-300);
		System.out.printf("t1 memberC : %d\n", t1.getMemberC()); // 300
	}

}

class TestClass1 {
	// 변수들은 모두 private로 정의한다.
	private int memberA = 100;
	private int memberB;
	private int memberC;

	// 만약 변수의 값을 객체 생성시 딱 한번만 저장할 수 있도록 하겠다면 생성자를 통해 처리한다.
	public TestClass1(int memberB) {
		this.memberB = memberB;
	}

	public void printValue() {
		System.out.printf("memberA : %d\n", memberA);
		System.out.printf("memberB : %d\n", memberB);
	}

	// memberC에 대한 setter
	public void setMemberC(int memberC) {
		// 값 저장에 대한 제한이 있다면 if문으로 구현해준다.
		if (memberC > 0) {
			this.memberC = memberC;
		}
	}

	// memberC에 대한 getter
	public int getMemberC() {
		return this.memberC;
	}
}

📖 코드 해석

  • TestClass1 t1 = new TestClass1(200);
    • TestClass1의 객체를 생성한다.
    • 이 때 생성자를 통해 memberB에 200이 저장된다.
    • 출력하면 memberA : 100(초기 값), memberB : 200이 나온다.
  • t1.setMemberC(300);
    • setter를 통해 memberC에 300을 저장한다.
    • 출력하면 memberC : 300 이 나온다.
  • t1.setMemberC(-300);
    • 주어진 값을 저장하기 위해 setter로 이동한다.
    • setter의 조건에서 0을 초과한 수만 저장하도록 조건이 있기 때문에 -300은 저장되지 않는다.
    • 따라서 이전에 저장되어 있던 memberC : 300이 출력된다.