Java

접근 제어 지시자(access modifier)와 캡슐화

hyomee2 2024. 7. 5. 18:26

1. 접근 제어 지시자(access modifier)

- default: 같은 패키지 내부에서만 접근 가능(상속 관계라도 패키지가 다르면 접근 불가)

- prvate: 같은 클래스 내부에서만 접근 가능(외부 클래스, 상속 관계의 클래스에서 접근 불가)

- protected: 같은 패키지나 상속관계의 클래스에서만 접근 가능

- public: 클래스의 외부 어디서나 접근 가능

 

 

2.get() / set() 메서드

- private를 선언된 멤버 변수에 접근, 수정할 수 있는 메서드를 public으로 제공한다.

- get() 메서드만 제공된 경우 read-only이다.

 

3. 캡슐화

- 하나의 목적을 이루기 위해 관련있는 모든 것을 하나의 캡슐에 담아두는 것

- 꼭 필요한 정보와 기능만 외부에 오픈(객체 내부 구조를 외부에서 알지 못하게 함 -> 외부에서 객체를 사용할 때 객체 내부 상태에 대한 직접적인 접근 막을 수 있다.)

- 각각의 메서드나 멤버 변수를 접근함으로써 발생하는 오류 최소화 가능

 

* 레포트 만들기 예제

public class MakeReport {
	StringBuffer buffer = new StringBuffer();
	
	private String line = "===========================================\n";
	private String title = "  이름\t   주소 \t\t  전화번호  \n";
	private void makeHeader()
	{  
    // 현업(?)에서는 buffer에 append을 이용해 출력할 내용(?)을 추가함(for문을 이용해서)
		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-7777-0987\n");
	}
	
	private void makeFooter()
	{
		buffer.append(line);
	}
	
	public String getReport()
	{
		makeHeader();
		generateBody();
		makeFooter();
		return buffer.toString();
	}
}
public class TestReprt {
	public static void main(String[] args) {
		MakeReport report = new MakeReport();
		String builder = report.getReport();
        // getReport() 메서드에만 직접적인 접근이 가능하다.
        // getReport() 메서드를 호출하면 필요한 다른 메서드가 호출됨(캡슐화)
		System.out.println(builder);
	}
}

 

 

 

* 본 게시글은

패스트 캠퍼스 "한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지" 강의를 통해 배운 내용을 정리한 게시글입니다.

'Java' 카테고리의 다른 글

[Java] 배열  (0) 2024.07.11
static 변수  (0) 2024.07.07
[Java] 객체 자신을 가리키는 this  (0) 2024.07.07
생성자(constructor)와 생성자 오버로딩  (0) 2024.07.05
[Java] 인스턴스 생성과 힙 메모리  (1) 2024.07.05