목차
Encapsulation (캡슐화)
Get / Set 메서드
캡슐화 예제 - 직접 변경 시도 시, 에러 발생 O
캡슐화 에제 - 메서드로 변경 시, 에러 발생 X
캡슐화 장점
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.
데이터 보안 강화.
주소 복사
랜덤 이동
최신댓글