[접근제어자] User

seratpfk·2022년 7월 28일
0

JAVA

목록 보기
47/96

정보 은닉(Information Hiding)

  • 객체 내부의 정보(=필드)를 다른 객체에게 보여주지 않고 숨기는 것
  • 객체 외부에서는 객체 내부 정보를 직접 접근하거나 조작하는 것이 불가능함
  • 객체의 정보는 필드에 저장하기 때문에 정보 은닉의 실제 의미는 필드 값을 숨기는 것을 의미
  • 필드에 직접 접근하는 대신 객체 외부에서 필드에 접근할 수 있도록 별도의 메소드를 구현함
  • 자바는 4가지 접근 제어자(Access Modifier)를 통해서 정보 은닉을 구현

접근 제어자(Access Modifier)

public

  • 누구나 접근할 수 있는 권한
  • 일반적으로 메소드가 public 권한을 가짐

private

  • 같은 패키지면 클래스가 달라도 접근할 수 있는 권한
  • 일반적으로 필드가 private 권한을 가짐

default

  • 같은 패키지면 클래스가 달라도 접근할 수 있는 권한
  • 접근 제어자를 생략하면 default로 동작

protected

  • 같은 패키지 또는 자식 클래스에서만 접근할 수 있는 권한
  • 다른 패키지에 있더라도 자식 클래스는 접근 가능

User 클래스 (메인메소드 없음)

// 필드는 private이다.
private String id;
private String password;
private String email;
private int point;
private boolean isVip;
// 메소드는 public이다.
public String getId() {
	return id;
}
public void setId(String pId) {
	id = pId;
}
public String getPassword() {
	return password;
}
public void setPassword(String pPassword) {
	password = pPassword;
}
public String getEmail() {
	return email;
}
public void setEmail(String pEmail) {
	email = pEmail;
}
public int getPoint() {
	return point;
}
public void setPoint(int pPoint) {
	point = pPoint;
	setVip(point >= 10000);
}
public boolean getVip() {
	return isVip;
}
private void setVip(boolean pVip) {
	isVip = pVip;
}

UserMain 클래스 (메인메소드 설정)

User user = new User();
user.setId("admin");
System.out.println(user.getId());
user.setPassword("123456");
System.out.println(user.getPassword());
user.setEmail("admin@web.com");
System.out.println(user.getEmail());
user.setPoint(1000);
System.out.println(user.getPoint());
System.out.println(user.getVip());

출력:
admin
123456
admin@web.com
1000
false

0개의 댓글