Java 캡슐화와 정보은닉, 그리고 접근 제어자

Codren·2021년 5월 29일
0
post-custom-banner

Section 1. Java 캡슐화와 정보은닉

1. 캡슐화 (Encapsulation)

관련 있는 멤버 변수와 메서드를 하나의 클래스로 묶고 외부에서 쉽게 접근하지 못하도록 하는 기법



2. 정보 은닉

객체 지향 프로그래밍에서 접근 가능한 최소한의 정보를 오픈함으로써 객체의 오류를 방지하여 클라이언트가 객체를 더 효율적으로 활용할 수 있도록 하는 기법

  • 캡슐화와 접근 제어자 (private) 를 이용해서 객체 속성에 대한 접근을 제한함



Section 2. Java 접근 제어자

1. Java 접근 제어자 (accesss modifier)

클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자에 접근할 수 있는지 여부를 지정하는 키워드로써 객체의 속성들에 대한 오용 및 잘못된 접근을 막기 위함




2. Java 접근 제어자 종류

    ① private : 같은 클래스 내부에서만 접근 가능 (외부 클래스, 상속 관계의 클래스에서도 접근 불가)
    ② default : 같은 패키지 내부에서만 접근 가능 (상속 관계라도 패키지가 다르면 접근 불가)
    ③ protected : 같은 패키지나 상속관계의 클래스에서 접근 가능
    ④ public : 클래스의 외부 어디서나 접근 할 수 있음




3. get / set 메서드

  • private 으로 선언된 멤버 변수 (필드)에 대해 접근 및 수정할 수 있는 메서드를 public으로 제공
  • get() 메서드만 제공 되는 경우 read-only 필드
  • 이클립스에서 자동으로 생성됨 (이클립스 코드상에서 우클릭 -> Source -> Generate GetterSetter)




4. 정보 은닉 구현

  • 사용자가 알 필요가 없는 멤버 변수와 메서드 들을 private 으로 지정하고 사용자는 String getReport() 메서드로만 객체에 접근 가능하도록 함
public class MakeReport {

	StringBuffer buffer = new StringBuffer();
	
	private String line = "===========================================\n";
	private String title = "  이름\t   주소 \t\t  전화번호  \n";
	private void makeHeader()
	{
		buffer.append(line);
		buffer.append(title);
		buffer.append(line);
	}
	
	private void generateBody()
	{
		buffer.append("James \t");
		buffer.append("Seoul Korea \t");
		buffer.append("010-2222-3333\n");
		
		buffer.append("Tomas \t");
		buffer.append("NewYork US \t");
		buffer.append("010-5555-6666\n");
	}
	
	private void makeFooter()
	{
		
		buffer.append(line);
	}
	
	public String getReport()
	{
		makeHeader();
		generateBody();
		makeFooter();
		return buffer.toString();
	}
}
post-custom-banner

0개의 댓글