quilt code

[Java] 클래스 (4) 본문

daily/Java

[Java] 클래스 (4)

김뱅쇼 2023. 1. 11. 21:03

6. 패키지와 접근 제한자

패키지: 클래스의 체계적 관리를 위해 사용. 클래스의 일부분, 식별자 역할

 

1) 패키지 선언 

: 해당 클래스가 어떤 패키지에 속할 것인지 선언하는 것

package 상위패키지.하위패키지;

public class ClassName { ... }

 

*패키지 선언 규칙*

  • 숫자로 시작x, _, $ 제외 특수문자 사용 불가
  • java로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용 불가
  • 모두 소문자로 작성

2) import문

: 사용하고자 하는 클래스 또는 인터페이스가 다른 패키지에 소속되어 있다면, import문으로 해당 패키지의 클래스 또는 인터페이스를 가져와 사용할 것임을 컴파일러에게 알려줘야함

import 상위패키지.하위패키지.클래스이름;
import 상위패키지.하위패키지.*;

* import문 자동 추가 기능

[Source] - [Organize imports] 메뉴 선택 / 단축키 ctrl + shift + o

 

3) 접근 제한자

public 외부 클래스가 자유롭게 사용 가능
protected 같은 패키지 or 자식 클래스에서 사용 가능
default 같은 패키지에서는 제한 x, 다른 패키지에서는 불가
private 외부 사용 불가

4) 클래스의 접근 제한

//default 접근 제한
class 클래스 { ... }
public 생략 -> default
같은 패키지에서는 제한 x
다른 패키지에서는 사용 불가
//public 접근 제한
public class 클래스 { ... }
+public
public 접근 제한
같은, 다른 패키지에서 접근 가능

5) 생성자의 접근 제한

public 제한 없이 생성자 호출
protected 같은 패키지 생성자 호출, 다른 패키지에 속한 클래스가 해당 클래스의 자식 클래스라면 생성자 호출 가능
default 제한 없이 생성자 호출 가능 but 다른 패키지에서는 생성자 호출 불가
private 생성자 호출 불가

6) 필드와 메소드의 접근 제한 

: 필드와 메소드를 선언할 때 해당 필드와 메소드를 클래스 내부에서만 사용할 것인지, 패키지 내에서만 사용할 것인지, 다른 패키지에서도 사용할지 결정해야함

//필드선언
[ public | protected | private ] [ static ] 타입 필드;
//메소드 선언
[ public | protected | private ] [ static ] 리턴 타입 메소드( ... ) { ... }
public 제한 없이 필드와 메소드 사용
protected 같은 패키지에 속하는 클래스에서 사용 가능, 다른 클래스여도 자식 클래스면 사용 가능
default 접근 제한자 생략하면  default 
같은 패키지 내에서는 제한 x, 다른 패키지에서는 사용 불가
private 클래스 내부에서만 사용 가능

 

7) Getter / Setter 메소드

① Setter 

 : 매개값을 검증해서 유효한 값만 객체의 필드로 저장하는 메소드

void setSpeed(double speed) {
   if (speed < 0) {
      this.speed = 0;
      return;
   } else {
      this.speed = speed;
   }
 }

>>매개값이 음수일 경우 speed 필드에 0으로 저장하고 메소드 실행 종료

 

② Getter

 : 메소드로 필드값을 가공한 후 외부로 전달하는 메소드

double getSpeed() {
     double ㎞ = speed * 1.6;
     return ㎞;
  }

>> 필드값이 마일을 ㎞ 단위로 환산한 후 외부로 리턴

 

private 타입 fieldName; 필드 접근 제한자 private
//Getter
public 리턴 타입 getFieldName() {
    return fieldName;
  }
접근 제한자 public
리턴 타입 : 필드타입
메소드 이름 : get + 필드이름(첫글자는 대문자)
리턴값 : 필드값
//Setter
public void setFieldName(타입 fieldName) {
     this.fieldName = fieldName;
  }
접근 제한자 public
리턴 타입 : void
메소드 이름 : set + 필드이름(첫글자는 대문자)
매개변수타입 : 필드타입

 

private boolean stop; 필드 접근 제한자 private
//Getter
public boolean isStop() {
    return stop;
  }
접근 제한자 public
리턴 타입 : 필드타입 -> boolean인 경우 get이 아니라 is로 시작
메소드 이름 : is + 필드이름
리턴값 : 필드값
//Setter
public void setStop(boolean stop) {
    this.stop = stop;
  }
접근 제한자 public
리턴 타입 : void
메소드 이름 : set + 필드이름
매개 변수 타입 : 필드타입

'daily > Java' 카테고리의 다른 글

[Java] 상속  (0) 2023.01.16
[Java] 클래스 (3)  (0) 2023.01.04
[Java] 클래스 (2)  (0) 2023.01.03
[Java] 클래스(1)  (0) 2023.01.02
[Java] 참조타입 과제  (0) 2023.01.02