• 회원가입
  • 로그인
  • 구글아이디로 로그인

[class] Java - Encapsulation (캡슐화) ※ Getter (게터) / Setter (세터)

1,103  
목차
  1. Encapsulation (캡슐화)
  2. Get / Set 메서드
  3. 캡슐화 예제 - 직접 변경 시도 시, 에러 발생 O
  4. 캡슐화 에제 - 메서드로 변경 시, 에러 발생 X
  5. 캡슐화 장점

 

Encapsulation (캡슐화)


아래 목적 위해,

클래스 안 데이터의 직접 수정을 막고 메서드로만 변경 허용.

1. 데이터 보호. 

2. 내부적으로만 작동하는 코드 숨김.

 


[방법]

 

1. 클래스 안 속성(=변수) :

private으로 설정. (= 동일 클래스에서만 접근 가능.)

 

2. private 설정된 속성에 접근 방법 :

public 설정된 get/set 메서드 통해서만 허용.

 

 

Get / Set 메서드

 

1.

클래스 안 데이터를 private 설정 시, 해당 클래스에서만 접근 가능.

그러나, 

public 설정된 get/set 메서드 제공 시, 외부 클래스에서 접근 가능.

 

2.

get 메서드 : 변수 값 반환. 

set 메서드 : 변수 값 설정.

※ 이클립스에서 Get/Set 생성. 

 

3.

get, set 메서드명 짓는 법:

get/set 뒤에 첫 글자가 대문자인 속성명 연결.

 


[예제]

 

public class Hz {

  private String site; // 외부 접근 제한 설정.

 

  public String getSite() { // get 메서드

    return site;

  }

 

  public void setSite(String newSite) { // set 메서드

    this.site = newSite;

  }

}

 


PS. 코드 설명.

 

※ this : 현재 객체.

※ set 메서드는 newSite 매개변수 취해, 이를 site 변수에 할당.

※ site 변수는 private으로 설정돼서, 외부에서 직접 접근 불가.

 

 

캡슐화 예제 - 직접 변경 시도 시, 에러 발생 O

1. C:\Users\사용자명\Hz.java 생성.

 

public class Hz {

  private String site;


  public String getSite() {

    return site;

  }

  public void setSite(String newSite) {

    this.site = newSite;

  }

}

 


2. C:\Users\사용자명\Index.java 생성.

 

public class Index {

} {

  public static void main(String[] args) {

    Hz myObj = new Hz();

    myObj.site = "홈짱닷컴 Homzzang.com"; // 에러 유발.

    System.out.println(myObj.site);

  }

}

 


3. 컴파일.

 

C:\Users\aspire>javac -encoding UTF-8 Hz.java

C:\Users\aspire>javac -encoding UTF-8 Index.java 

이 부분에서 에러나서 더 이상 진행 불가.

 


PS. 에러 내용.

 

Index.java:4: error: site has private access in Hz

    myObj.site = "홈짱닷컴 Homzzang.com";

         ^

Index.java:5: error: site has private access in Hz

    System.out.println(myObj.site);

                            ^

2 errors

 

 

캡슐화 에제 - 메서드로 변경 시, 에러 발생 X

1. C:\Users\사용자명\Hz.java 생성.

 

public class Hz {

  private String site;


  public String getSite() {

    return site;

  }

  public void setSite(String newSite) {

    this.site = newSite;

  }

}

 


2. C:\Users\사용자명\Index.java 생성.

 

public class Index {

  public static void main(String[] args) {

    Hz myObj = new Hz();

    myObj.setSite("홈짱닷컴 Homzzang.com");

    System.out.println(myObj.getSite());

  }

}

 


3. 파일 컴파일. (= 클래스 파일 생성.)

 

C:\Users\aspire>javac -encoding UTF-8 Hz.java

※ Hz.class 파일 생성됨.

 

C:\Users\aspire>javac -encoding UTF-8 Index.java 

※ Index.class 파일 생성됨.

 


4. 클래스 실행.

 

C:\Users\aspire>java Index

 

결과값: 홈짱닷컴 Homzzang.com

 

캡슐화 장점

 

1.

클래스 안 속성/메서드에 대한 더 나은 제어.

 

2.

클래스 안 속성은, 읽기전용/쓰기전용으로 설정 가능.

※ 읽기 전용 : get 메소드만 사용. 

※ 쓰기 전용 : set 메소드만 사용.

 

3.

유연성. (즉,  다른 부분에 영향 안 주고, 코드 일부만 변경 가능.)

 

4.

데이터 보안 강화.

 



분류 제목
Keyword Java - instanceof 키워드 - 객체가 클래스(또는, 인터페이스)의 인스턴스인지 체크. (= 인스…
Keyword Java - int 키워드 - int 정수 자료형 변수 선언.
Keyword Java - interface 키워드 - 인터페이스 선언
Keyword Java - long 키워드 - long 자료형 정수 담는 변수 선언.
Keyword Java - module 키워드 △ - 모듈 선언.
Keyword Java - native 키워드 △ - 메서드가 동일 Java 소스 파일(다른 언어)에서 구현되지 않도록 지…
Keyword Java - new 키워드 - 새로운 객체 생성 (= new키워드 = 뉴키워드)
Keyword Java - package 키워드 - 패키지 선언.
Keyword Java - private 키워드 - 선언된 클래스 안에서만 접근 가능 설정.
Keyword Java - protected 키워드 - 같은 패키지 및 서브 클래스에서만 접근 가능 설정.
Keyword Java - public 키워드 - 다른 클래스의 접근을 허용. (= 퍼블릭)
Keyword Java - requires 키워드 △ - 모듈 내부에 필요한 라이브러리 지정. (Java 9 이상)
Keyword Java - return 키워드 - 메서드 실행 후, 값을 반환.
Keyword Java - short 키워드 - short 정수 자료형 선언.
Keyword Java - static 키워드 - 객체 생성 없이 바로 접근 가능한 (메서드/속성) 선언.
Keyword Java - strictfp 키워드 △ - 부동 소수점 계산 정밀도 및 반올림 제한.
Keyword Java - super 키워드 - 슈퍼클래스 (= 부모클래스) 객체 의미.
Keyword Java - switch 키워드 - switch 조건문 선언.
Keyword Java - synchronized 키워드 △ - 한 번에 하나의 스레드에서만 메소드에 접근 가능 지정하는 …
Keyword Java - this 키워드 - (메서드・생성자)에서 현재 객체 지칭. (= 디스)
5/10
목록
찾아주셔서 감사합니다. Since 2012