일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 우리에프아이에스 #
- K-디지털트레이닝
- HTTP
- 우리FISA
- jdk
- 클라우드 서비스 개발 #
- 우리FIS아카데미 #
- 리눅스
- 글로벌소프트웨어캠퍼스
- M2
- spring
- 우리에프아이에스
- route 53
- 클라우드 서비스 개발
- Java
- 맥북
- AWS
- 맥OS
- 맥
- springboot
- dbeaver
- 로드밸런스
- 도메인
- mysql
- 우리FISA #
- sts
- Gradle
- https
- 우리FIS아카데미
- Today
- Total
<<개발일지>>
6-6클래스(패키지와 접근 제한자) 본문
패키지 : 패키지의 물리적인 형태는 파일 시스템의 폴더이다. 패키지는 단순히 파일 시스템의 폴더 기능만 하는 것이 아니라 클래스의 일부분으로, 클래스를 유일하게 만들어주는 식별자 역할을 한다.
상위패키지.하위패키지.클래스
ex)
A 클래스의 전체 이름은 com.mycompany.A
B 클래스의 전체 이름은 com.yourcompany.B
패키지 선언 : 클래스를 작성할 때 해당 클래스가 어떤 패키지에 속할 것인지를 선언하는 것을 패키지 선언이라고 한다.
예를 들어, Car 클래스가 com.mycompany 패키지에 속해야 한다면 다음과 같이 Car 클래스를 작성해야 한다.
pakage com.mycompany;
public class Car() {...}
*패키지는 클래스의 일부이다. 그 이유는 클래스만 따로 복사해서 다른 곳으로 이동하면 클래스를 사용할 수 없기 때문이다.
*패키지 이름 작성시 규칙
- 숫자로 시작해서는 안 되고 _, $를 제외한 특수 문자를 사용해서는 안 된다.
- java로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용해서는 안 된다.
- 모두 소문자로 작성하는 것이 관례이다.
*패키지 이름의 중복 방지 방법
회사들 간에 패키지가 중복되지 않도록 흔히 회사의 도메인 이름으로 패키지를 만든다. 도메인 등록 기관에서 유일한 이름이 되도록 검증되었기 때문에 도메인 이름으로 패키지를 만들면 다른 회사의 패키지와 중복되는 경우가 발생하지 않는다.
도메인 이름 역순으로 패키지 이름을 지어주는데, 그 이유는 포괄적인 상위 패키지가 되도록 하기 위함이다. 그리고 마지막에는 프로젝트 이름을 붙여주는 것이 관례이다.
ex)
com.samsung.projectname
com.hyundai.projectname
com.lg.projectname
import문 : 사용하고자 하는 클래스 또는 인터페이스가 다른 패키지에 소속되어 있다면, import문으로 해당 패키지의 클래스 또는 인터페이스를 가져와 사용할 것임을 컴파일에게 알려줘야 한다.
ex) import문을 작성하는 법
import 상위패키지.하위패키지.클래스이름;
import 상위패키지.하위패키지.*;
*import문은 패키지 선언과 클래스 선언 사이에 작성한다.
*만약 사용하고자 하는 클래스들이 동일한 패키지 소속이라면 개별 import문을 작성하는 것보다는 *를 이용해서 해당 패키지에 소속된 클래스들을 사용할 것임을 알려주는 것도 좋은 방법이다.
*import문은 개수에 제한이 없고 얼마든지 추가할 수 있다.
*상위 패키지를 import했다고 해서 하위 패키지 까지 import되는 것은 아니라는 점이다. 자바는 패키지 전체 이름으로 패키지를 식별하기 때문에 com.hankook과 com.hankook.project를 서로 다른 패키지로 인식한다.
접근 제한자 : 접근 제한자는 말 그대로 접근을 제한하기 위해 사용된다. 여기서 접근이란 클래스 및 인터페이스 그리고 이들이 가지고 있는 멤버의 접근을 말한다.
- public 접근 제한자 : 단어 뜻 그대로 외부 클래스가 자유롭게 사용할 수 있도록 한다.
- protected 접근 제한자 : 같은 패키지 또는 자식 클래스에서 사용할 수 있도록 한다.
- private 접근 제한자 : 단어 뜻 그대로 개인적인 것이라 외부에서 사용될 수 없도록 한다. -> 같은 패키지 다른 클래스에서 x, 다른 패키지는 물론 안 됨.
- default 접근 제한자 : 같은 패키지에 소속된 클래스에서만 사용할 수 있도록 한다.
생성자의 접근 제한
객체를 생성하기 위해서는 new 연산자로 생성자를 호출한다. 하지만 생성자를 어디에서나 호출할 수 있는 것은 아니다. 생성자가 어떤 접근 제한을 갖느냐에 따라 호출 가능 여부가 결정된다.
필드와 메소드의 접근 제한
필드와 메소들르 선언할 때 해당 필드와 메소드를 클래스 내부에서만 사용할 것인지, 패키지 내에서만 사용할 것인지, 아니면 다른 패키지에서도 사용할 수 있도록 하 것인지를 결정해야 한다. 이것은 필드와 메소드가 어떤 접근 제한을 갖느냐에 따라 결정된다.
*클래스 내부일 경우 접근 제한자의 영향을 받지 않음
Getter와 Setter 메소드
필드는 외부에서 접근할 수 없도록 막고 메소드는 공개해서 외부에서 메소드를 통해 필드에 접근하도록 유도한다. 필드의 값을 외부로. 리턴해주는 메소드를 Getter라고 하고 외부에서 값을 받아 필드를 변경하는 메소드를 Setter라고 한다.
private 타입 fieldName;
//Getter
public 리턴 타입 getFieldName(); {
return fieldName;
}
//Setter
public void setFieldName(타입 fieldName) {
this.fieldName = fieldName;
}
*필드 타입이 boolean일 경우 Getter는 get으로 시작하지 않고 is로 시작하는 것이 관례이다.
private boolean stop;
//Getter
public boolean isStop() {
return stop;
}
//Setter
public void setStop(boolean stop) {
this.stop = stop;
}
'Java 문법' 카테고리의 다른 글
7-2상속(타입 변환과 다형성) (0) | 2023.10.09 |
---|---|
7-1.상속(상속) (1) | 2023.10.07 |
6-5클래스(인스턴스 멤버와 정적 멤버) (0) | 2023.10.02 |
6-4클래스(메소드) (1) | 2023.10.02 |
6-3클래스(생성자) (0) | 2023.09.30 |