[Java] 접근 제어자 : public, protected, default, private

정재현·2024년 1월 3일

Java

목록 보기
26/43
post-thumbnail

제어자란?

  • 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여해줌
  • 하나의 대상에 여러 개의 제어자를 조합해서 사용 가능하지만, 접근 제어자는 단 하나만 사용 가능

접근제어자

  • public, protected, default, private

그 외 제어자

  • static, final, abstract

접근 제어자

  • 멤버 또는 클래스에 사용, 외부에서 접근하지 못하도록 제한하는 역할
  • 지정되어 있지 않다면 default

사용처

  • 클래스, 멤버변수, 메서드, 생성자에 사용
  • 클래스 내부에 선언된 데이터를 보호
  • 객체의 무결성
    • 변경이 없는 상태를 유지하기 위해 사용
    • 유효한 값을 유지하고, 함부로 변경하지 못하도록 접근 제한

종류

  • public : 접근 제한이 전혀 없음
  • protected : 같은 패키지 내에서, 다른 패키지의 자손클래스에서 접근 가능
  • default : 같은 패키지 내에서만 접근 가능
  • private : 같은 클래스 내에서만 접근 가능

사용가능한 접근 제어자

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

생성자의 접근 제어자

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

Getter와 Setter

  • 외부에서 필드에 직접 접근하는 것을 막기 위해 필드에 private, default등의 접근 제어자를 사용하는데 이런 객체의 private필드를 읽어오고 저장하는 방법

Getter

  • 외부에서 객체의 private 한 필드를 읽을 필요가 있을 때 사용
  • 메서드 이름의 규칙 : get + 필드이름(첫 글자 대문자)
	private double speed;

	public String getSpeed(){
		return speed;
    }

Setter

  • 외부에서 객체의 private한 필드를 저장/수정할 필요가 있을 때 사용
  • 메서드 이름의 규칙 : set + 필드이름(첫 글자 대문자)
		private double speed;

		public void setSpeed(double speed){
			this.speed = speed;
    	}

제어자의 조합

사용 가능한 제어자

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

제어자 사용시 주의사항

  • 메서드에 staticabstract를 함께 사용할 수 없다.
  • 클래스에 abstractfinal을 동시에 사용할 수 없다.
  • abstract메서드의 접근 제어자가 private일 수 없다.
  • 메서드에 privatefinal을 같이 사용할 필요는 없다.

profile
공부 기록 보관소

0개의 댓글