접근 수준 지시자(Access-level Modifiers) / java

aljongjong·2021년 8월 25일
0

맨날까먹는거

목록 보기
1/13
  • public, protected, pirvate, default
  • default: 아무런 선언도 하지 않은 상황
  • 선언을 할 수 있는 대상 -> 클래스의 정의, 클래스의 인스턴스 변수와 메소드
  • 클래스 정의 대상: public, default
  • 인스턴스 변수와 메소드 대상: public, protected, private, default

클래스 정의 대상 public 선언

  • public class AAA { ••• } —> 클래스의 public 선언
  • public으로 선언되면 위치에 상관없이 어디서든 해당 클래스의 인스턴스를 생성할 수 있다.
  • 하나의 소스파일에는 public으로 선언된 클래스의 정의를 하나만 둘 수 있다.
  • 소스파일의 이름은 public으로 선언된 클래스의 이름과 동일해야 한다.
  • 위 두 개의 이유는 프로그램의 큰 틀을 분석하는 과정에서 먼저 관찰하게 되는 public 클래스를 중심으로 소스파일을 형성하기 위함이다.

클래스 정의 대상 default 선언

  • class ZZZ { ••• } —> 클래스의 default 선언
  • default로 선언되면 동일 패키지로 묶인 클래스 내에서만 인스턴스 생성이 가능하다.

인스턴스 멤버 대상의 public, protected, private, default 선언

class X {
	public int num1;		// 인스턴스 변수의 public 선언
	protected int num2;		// 인스턴스 변수의 protected 선언
    	private int num3;		// 인스턴스 변수의 private 선언
    	int num4;			// 인스턴스 변수의 default 선언
        
        public void md1() {}		// 인스턴스 메소드의 public 선언
	protected void md2() {}		// 인스턴스 메소드의 protected 선언
    	private void md3() {}		// 인스턴스 메소드의 private 선언
        void md4() {}			// 인스턴스 메소드의 default 선언
}

인스턴스 멤버의 public과 default 선언

  • public -> 어디서든 접근이 가능하다.
  • default -> 동일 패키지로 묶인 클래스 내에서만 접근이 가능하다.
  • 변수 ‘접근’ / 메소드 ‘호출’

인스턴스 멤버의 private 선언

  • 동일 클래스에 정의된 메소드 내에서만 접근, 호출 가능

인스턴스 멤버의 protected 선언

  • protected 선언은 default 선언이 허용하는 접근을 모두 허용한다.
  • 더불어 protected는 default가 허용하지 않는 ‘한 영역’에서의 접근도 허용한다.
  • ‘한 영역’ —> protected로 선언된 멤버는 상속 관계에 있는 다른 클래스에서 접근 가능하다. —> 상속 관계에 있는 두 클래스가 서로 다른 패키지여도 접근 가능!!
  • (default 선언된 인스턴스의 멤버는 동일 패키지에서 상속 관계에 있는 다른 클래스에서 접근 가능)

0개의 댓글

관련 채용 정보