☕ Java

[Java] Day11 - 캡슐화

harveydent 2023. 5. 16. 19:33
728x90

캡슐화

캡슐화란 외부로 부터 클래스에 정의된 속성과 기능들을 보호하고, 필요한 부분만 외부로 노출될 수 있도록 하여 각 객체 고유의 독립성과 책임 영역을 안전하게 지키는 것을 의미합니다.

접근 제어자

자바 객체 지향 프로그래밍에서 캡슐화를 구현하기 위한 방법 중 하나는 접근제어자를 활용하는 것 입니다. 접근제어자는 클래스 또는 클래스 내부의 멤버들에 사용되어 해당 클래스나 멤버들을 외부에서 접근하지 못하도록 접근을 제한하는 역할을 합니다.

접근 제어자 종류

  • public
  • default
  • protected
  • private
접근 제어자 클래스 내 패키지 내 다른 패키지의 하위 클래스 패키지 외 설명
private O X X X 동일 클래스 내에서만 접근 가능
default O O X X 동일 패키지 내에서만 접근 가능
protected O O O X 동일 패키지 + 다른 패키지의 하위클래스에서 접근 가능
public O O O O 접근 제한 없음

접근 제어자의 접근 범위

 

getter / setter

package class01;

class Student {
	private String name;
	private int score;
	
	Student(String name, int score) {
		this.name = name;
		this.score = score;
		System.out.println(this.name + "학생 생성완료!");
	}
	
	@Override
	public String toString() {
		return this.name + "학생은 " + this.score + "점 입니다.";
	}

	// private된 멤버변수에 접근 가능하도록하는 "메서드"를 추가로 생성
	// setter : 멤버변수에 값을 설정해줌	
	// getter : 멤버변수로부터 값을 받아올 수 있도록 해줌
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}

	public int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}
}

위의 예제 코드에서 모든 속성값들이 private 접근 제어자로 선언되어 있고, getter / setter 메서드의 접근제어자만이 public 으로 선언되어 있습니다. 따라서 선택적으로 외부에 접근을 허용할 속성과 그렇지 않을 속성을 getter / setter 메서드를 통해 설정해줄 수 있습니다.

 

 Generate Getter and Setter 선언 방법

GitHub

https://github.com/Qkrwnsgus0522/Java

 

GitHub - Qkrwnsgus0522/Java

Contribute to Qkrwnsgus0522/Java development by creating an account on GitHub.

github.com

 

728x90