Java : 접근 제어자, Getter, Setter

커비·2024년 11월 14일
0

Java

목록 보기
43/55

제어자

: 제어자는 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여해 줌
하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나,
접슨 제어자는 단 하나사용할 수 있다.

접근 제어자

public, protected, default, private

그 외 제어자

static, final, abstract


접근 제어자

: 접근을 어디까지 허용할 것인가!
멤버 또는 클래스에 사용하고 외부에서 접근하지 못하도록 제한함

  • 클래스, 멤버변수, 메서드, 생성자에 사용되고 지정되어 있지 않다면 default임
    public : 접근 제한이 전혀 없음
    protected : 같은 패키지 내에서 다른 패키지의 자손 클래스에서 접근 가능
    default : 같은 패키지 내에서만 접근 가능
    private : 같은 클래스 내에서만 접근 가능 (보수적)

사용 가능한 접근 제어자

  • 클래스 : public, default
  • 메서드 & 멤버변수 : public, protected, default, private
  • 지역 변수 : 없음

접근 제어자를 이용한 캡슐화 (은닉성)

  • 접근제어자는 클래스 내부에 선언된 데이터를 보호하기 위해 사용함
  • 유효한 값을 유지하도록 함부로 변경하지 못하도록 접근을 제한하는 것이 필요

생성자의 접근 제어자

  • 생성자에 접근 제어자를 사용함으로 인스턴스의 생성을 제한할 수 있음
  • 일반적으로 생성자의 접근 제어자는 클래스의 접근 제어자와 일치

❤️‍🔥 Getter 와 Setter

객체의 무결성, 변경이 없는 상태를 유지하기 위해 접근 제어자를 사용

  • 외부에서 필드에 직접 접근하는 것을 막기 위해 필드에 default, private 등의 접근 제어자를 사용할 수 있음
  • 어떻게 객체의 private 필드를 읽거나 저장할 수 있을까?
    : Getter와 Stter를 사용하여 해결 가능

Getter

: 직접적인 값의 조회와 세팅을 방지하기 위해 사용
외부에서 객체의 private 한 필드(class 내부)를 읽을 필요가 있을 때 Getter 메서드를 사용함

private double speed; // 자동차 속도 km/h
private char gear = 'P'; // 기어의 상태 P R N D
private boolean lights; // 자동차 조명 상태 
  • 자동차 클래스의 필드에 이처럼 private 접근 제어자로 지정한 필드가 있을 때 Getter 메서드를 통해 값을 가져올 수 있음
public String getModel(){
	return model;
}

public String getColor(){
	return color;
}

public String getPrice(){
	return price;
}
  • 메서드 이름의 규칙 : get + 필드이름(첫 글자 대문자: 카멜케이스)
  • 사용하는 방법 : 인스턴스 메서드 호출과 동일함

Setter

외부에서 객체의 private한 필드를 저장/수정할 필요가 있을 때 Setter 메서드를 사용함

private double speed; // 자동차 속도 km/h
private char gear = 'P'; // 기어의 상태 P R N D
private boolean lights; // 자동차 조명 상태 
  • 자동차 클래스의 필드에 이처럼 private 접근 제어자로 지정한 필드가 있을 때 Setter 메서드를 통해 값을 저장하거나 수정할 수 있음
public void setModel(String model){
	this.model = model;
}

public void setColor(String color){
	this.model = color;
}

public void setPrice(String price){
	this.model = price;
}
  • 메서드 이름의 규칙 : set + 필드이름(첫 글자 대문자 : 카멜케이스)
  • 사용하는 방법 : 인스턴스 메서드 호출과 동일함

제어자의 조합

사용가능한 제어자

  • 클래스 : public, default, final, abstract
  • 메서드 : public, default, final, abstract, protected, static, private
  • 멤버변수 : public, default, final, protected, private, static
  • 지역변수 : final

🚨 제어자 사용시 주의사항

  • 메서드에 staticabstract 를 함께 사용할 수 없음
  • 클래스에 abstractfinal 을 동시에 사용할 수 없음
  • abstract 메서드의 접근 제어자가 private 일 수 없음
  • 메서드에 privatefinal 을 같이 사용할 필요는 없음
profile
전공은 컴퓨터공학, 복수전공은 해킹보안학, 직장은 방학(파워 구직중)

0개의 댓글