[JAVA]클래스와객체 _ 접근 제어자

김나영·2022년 8월 16일
0

JAVA

목록 보기
10/14

정보은닉 (Information Hiding)

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

접근 제어자(Access Modifier)

클래스 및 인터페이스 그리고 이들이 가지고 있는 멤버의 접글을 제한하기 위해 사용

  • public
    • 누구나 접근할 수 있는 권한
    • 일반적으로 메소드가 public 권한을 가짐
  • priavte
    • 클래스 내부에서만 접근이 가능한 권한
    • 일반적으로 필드가 private 권한을 가짐

필드는 private, 메소드(생성자) public

  • default
    • 같은 패키지에서만 접근할 수 있는 권한
    • 접근 제어자를 생략하면 defaul로 동작함

예제

→User

package ex08_access_modifier;

public class 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

package ex08_access_modifier;

public class UserMain {

	public static void main(String[] args) {
		
		User user = new User();
		
		user.setId("admin");		
		System.out.println(user.getId());
		
		user.setPassword("1234567");
		System.out.println(user.getPassword());

		user.setEmail("admin@email.com");
		System.out.println(user.getEmail());
		
		user.setPoint(10000);
		System.out.println(user.getPoint());
		
		System.out.println(user.getVip());
	}
}
profile
응애 나 애기 개발자

0개의 댓글