본문으로 바로가기

패키지(package), 접근 제한자, Getter와 Setter

category Dev Environment 2016. 7. 15. 14:59


패키지란

@ 클래스를 기능별로 묶어서 그룹 이름을 붙여 놓은 것을 말합니다.

  • 파일들을 관리하기 위해 사용하는 폴더(디렉토리)와 비슷한 개념입니다.
  • 패키지의 물리적인 형태는 파일 시스템의 폴더입니다.

@ 패키지는 클래스 이름의 일부입니다.
  • 전체 클래스 이름 = 상위패키지.하위패키지.클래스
  • 클래스명이 같아도 패키지명이 다르면 다른 클래스로 취급합니다.

@클래스를 선언할 때 패키지가 결정됩니다.
  • 클래스를 선언할 때 포함될 패키지를 선언해야 합니다.
  • 클래스 파일(~.class) 선언된 패키지와 동일한 폴더안에서만 동작합니다.
  • 클래스 파일은 다른 폴더안에 넣으면 동작하지 않습니다.




패키지 선언

@ 패키지 선언은 클래스 선언 첫 줄에 해야합니다.

@ 상위 패키지와 하위 패키지는 도트(.)로 구분합니다.

@ 패키지 이름 규칙

  • 전부 알파벳 소문자로 작성하는 것이 관례적입니다.
  • 숫자로 시작해서은 안됩니다.
  • _ , $ 를 제외한 특수문자를 사용해서는 안됩니다.
  • 회사 도메인의 역순으로 패키지 이름을 보통 만듭니다. ex) org.apache.projectname




접근 제한자 (Access Modifier)

@ 클래스 및  클래스 구성 멤버에 대한 접근을 제한하는 역할을 합니다.

  • 다른 패키지에서 클래스를 사용하지 못하도록 막는다.(클래스 제한)
  • 클래스로부터 객체를 생성하지 못하도록 막는다.(생성자 제한)
  • 특정 필드와 메소드를 숨김 처리한다.(필드와 메소드 제한)


§ 접근 제한자의 종류

접근 제한 

적용 대상 

접근할 수 없는 클래스 

 public

클래스, 필드, 생성자, 메소드 

없음 

protected 

필드, 생성자, 메소드 

자식 클래스가 아닌 다른 패키지에 소속된 클래스 

default 

클래스,필드, 생성자, 메소드 

다른 패키지에 소속된 클래스 

private 

필드, 생성자, 메소드 

모든 외부 클래스 






Getter 와 Setter

@ 클래스를 선언할 대 필드는 일반적으로 private 접근 제한을 합니다

  • 읽기 전용 필드가 있을 수 있다(Getter 의 필요성)
  • 외부에서 엉뚱한 값으로 변경할 수 없도록 합니다.(Setter 의 필요성)

필드를 일반적으로 private 접근 제한을 하면 외부에서 접근 제한이 안되기 때문에 외부에서 절대 값을 읽을 수가 없기 때문에 읽기만 가능하도록 구성할 수 있으며 (Getter) 외부에서 올바른 값만 저장할 수 있도록 Setter 를 사용할 수 있습니다.





Getter

@ private 필드의 값을 리턴하는 역할을 합니다.

  • 필요할 경우 필드의 값을 가공해서 리턴합니다.


@ getFieldName() 또는 isFieldName() 메소드를 일컫습니다.
  • 필드 타입이 boolean 일 경우 isFieldName() 이라고 일반적으로 작성합니다.




Setter

@ 외부에서 주어진 값을 필드값으로 수정합니다.

  • 필요할 경우 외부의 값을 유효성을 검사합니다.

@ setFiildName(타입 변수) 메소드를 말합니다.
  • 매개 변수 타입을 필드의 타입과 동일합니다.



댓글을 달아 주세요