| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- spring
- oracle
- BACK-END
- 프론트엔드
- 미니정리
- 디자인 패턴
- 자바스크립트
- 프로그래머스
- 백엔드
- 쿼리
- SQL
- 데이터베이스
- 자바
- 정리
- jsp
- node.js
- 서버
- 스프링부트
- java
- 프런트엔드
- 코드테스트
- 알고리즘
- Next.js
- 오라클
- JavaScript
- MySQL
- web
- 스프링
- jpa
- 코드 테스트
- Today
- Total
참치코더의 꿈 메모장
2020/08/11 Java - 패키지와 접근 제한자 본문
패키지 선언
클래스를 작성할 때 해당 클래스가 어떤 패키지에 속할 것인지를 선언하는 것을 패키지 선언이라고 한다.
패키지 선언 방법
package 상위패키지.하위패키지;
public class Classame { }
패키지는 클래스의 일부이다.
*클래스만 따로 복사해서 다른 곳으로 이동하면 클래스를 사용할 수 없다.
*만약 클래스를 이동해야 한다면 패키지 전체를 이동시켜야 한다.
패키지 이름 작성 규칙
1. 숫자로 시작해서는 안 되고 _,$를 제외한 특수 문자를 사용해서는 안 된다.
2. java로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용해서는 안 된다.
3. 모두 소문자로 작성하는 것이 관례이다.
* 이클립스는 패키지 선언이 없는 클래스를 default 패키지에 포함시킨다. (default 패키지는 사실상 패키지가 없는 것)
* JDK 11 이후 버전부터는 패키지가 없는 클래스를 생성하면 컴파일 에러가 난다.
import 문
사용하고자 하는 클래스 또는 인터페이스가 다른 패키지에 소속되어 있다면, import문으로 해당 패키지의 클래스
또는 인터페이스를 가져와 사용할 것임을 컴파일러에게 알려줘야 한다.
import문 작성하는 방법
import 상위패키지.하위패키지.클래스이름;
import 상위패키지.하위패키지.*;
만약 사용하고자 하는 클래스들이 동일한 패키지 소속이라면 개별 import 문을 작성하는 것보다는
*을 사용해서 해당 패키지에 소속된 클래스들을 사용할 것임을 알려주는 것도 좋은 방법이다.
import문은 개수에 제한이 없고 얼마든지 추가할 수 있다.
* 이클립스에서 import문 자동 추가 기능 : ctrl + shift + o
접근 제한자
접근 제한자는 말 그대로 접근을 제한하기 위해 사용된다.
접근 제한자의 종류
public 접근 제한자 : 외부 클래스가 자유롭게 사용할 수 있도록 한다.
protected 접근 제한자 : 같은 패키지 또는 자식 클래스에서 사용할 수 있도록 한다.
private 접근 제한자 : 단어 뜻 그대로 개인적인 것이라 외부에서 사용될 수 없도록 한다.
위 세가지 접근 제한자가 적용되지 않으면 default 접근 제한을 가진다.
default 접근 제한 : 같은 패키지에 소속된 클래스에서만 사용할 수 있도록 한다.
* 클래스를 다른 개발자가 사용할 수 있도록 라이브러리 클래스로 개발한다면 반드시
public 접근 제한을 갖도록 해야 한다.
* 인터넷으로 배포되는 라이브러리 클래스도 모두 public 접근 제한을 가지고 있다.
생성자의 접근 제한
생성자가 어떤 접근 제한을 갖느냐에 따라 호출 가능 여부가 결정된다.
*자동으로 생성되는 기본 생성자의 접근 제한은 클래스의 접근 제한과 동일하다.
Getter와 Setter 메소드
객체 지향 프로그래밍에서는 객체의 필드를 객체 외부에서 직접적으로 접근하는 것을 막는다.
그 이유는 외부에서 마음대로 변경할 경우 객체의 무결성이 깨질 수 있기 때문이다.
이러한 문제점 때문에 객체 지향 프로그래밍에서 메소드를 통해서 필드를 변경하는 방법을 선호한다.
그 이유는 메소드는 매개값을 검증해서 유효한 값만 객체의 필드로 저장할 수 있기 때문이다.
클래스를 선언할 때 가능하다면 필드를 private로 선언해서 외부로부터 보호하고,
필드에 대한 Setter와 Getter 메소드를 작성해서 필드값을 안전하게 변경/사용하는 것이 좋다.
priavate 타입 fieldName;
public 리턴 타입 getFieldName(){
return fieldName;
}
public void setFieldName(타입 fieldName) {
this.fieldName = fieldName;
}
* 이클립스에서 자동으로 Getter/Setter 메소드를 생성시키는 기능
* 필드를 선언 한후 Source - Generate Getters and Setters 메뉴 선택
'JAVA' 카테고리의 다른 글
| 2021/08/23 Java - 컬렉션 프레임워크 List 컬렉션 (0) | 2021.08.23 |
|---|---|
| 2021/08/14 Java - 상속 (0) | 2021.08.15 |
| 2021/08/10 Java - 인스턴스 멤버와 정적 멤버 (0) | 2021.08.10 |
| 2021/08/04 Java - 토이 프로젝트(게시판 만들기) (0) | 2021.08.04 |
| 2021/08/02 Java - 메소드 (0) | 2021.08.02 |