싱글톤(Singleton) : 하나의 객체만 존재해야 하는 경우.
- 클래스 외부에서 생성자를 호출 가능하면 안됨 = 생성자 앞에 private을 붙여 줘야 함.
class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {}
static Singleton getInstance() {
return singleton;
}
}
- 외부에서 사용 할 때 객체를 얻는 유일한 방법은 getInstance() 메소드를 호출하는 것 = 단 하나의 객체만 리턴 함.
* 아직은 잘 사용 할 이유는 모르겠지만
https://jeong-pro.tistory.com/86
위의 사이트에서 확인 가능
final 필드 : 초기값 저장시 최종적인 값이 되어 프로그램 실행 중 수정 할수 없는 필드.
상수(static final) : 불변의 값.
- 상수는 final 필드가 아님. 불변의 값은 객체마다 저장 할 필요가 없는 공용성을 띄고 있지만 final 필드는 객체마다 생성자를 통해서 초기화하여 다르게 사용 할 수 있음.
- 객체마다 저장 할 필요가 없으므로 정적(static) 필드.
- 상수 이름은 대문자로 작성하는 것이 관례.
패키지 : 클래스를 체계적으로 관리하기 위해 사용
- 클래스를 컴파일하는 과정에서 자동으로 생성됨. package 상위 패키지.하위패키지; 를 통해 패키지 선언 가능. 폴더 자동 생성.
- 관례에 따라서 이름을 지어줘야 함. (소문자, 숫자로 시작 x, _/$을 제외한 특수 문자 사용 x)
- src에 있는 모든 내용을 컴파일해서 bin 폴더에서 생성 시킴 > 생성된 bin 폴더는 Window - show view - Navigator에서 확인 가능
- default 패키지 : 패키지에 속해있지 않은 클래스들을 저장함. = 드문 경우.
- 다른 패키지에 속하는 클래스를 사용하려면 import문 사용해야 함.
접근 제한자 : 데이터 보호를 위한 목적. 외부 클래스에서 접근할 수 있는 멤버와 접근 할 수 없는 멤버로 구분해서 필드, 생성자, 메소드를 설계 해야 함.
클래스 내부 | 동일 패키지 | 하위 클래스 | 그 외 | |
public | O | O | O | O |
protected | O | O | O | X |
default | O | O | X | X |
private | O | X | X | X |
접근 영역 : public . protected > default > private
- 클래스는 public과 default 중 택 1.
- protected와 default 차이점 : 다른 패키지에 속한 클래스가 해당 클래스의 자식(child) 클래스라면 접근 가능.
Getter, Setter 메소드 : 객체의 데이터는 객체 외부에서 직접적으로 접근하는 것을 막음.
- 객체의 무결성을 지키기 위함
- 필드 타입이 boolean일 경우 Getter는 get으로 시작하지 않고 is로 시작하는 것이 관례
**
잘 이해 안됨
어노테이션(Annotation) : 메타데이터 = 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할 것인지 알려주는 정보. 데이터를 위한 데이터.
@AnnotationName
용도
1. 컴파일러에게 코드 문법 에러를 체크하도록 정보 제공
2. 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성 할 수 있도록 정보 제공
3. 실행 시 (런타임 시) 특정 기능을 실행하도록 정보 제공
Java에서 기본적으로 제공하는 어노테이션
1. @Override : 메서드가 오버라이드 되었음. 상위 클래스에서 해당 메서드를 찾을 수 없다면 컴파일 에러
2. @Deprecated : 해당 메서드는 더 이상 사용되지 않음. 사용하는 경우 컴파일 경고
3. @SuppressWarings : 선언한 곳의 컴파일 경고 무시
4. @SafeVarargs : Java 7부터 지원, 제너릭 같은 가변인자의 매개변수를 사용할 때 경고 무시
5. @FunctionallInterface : Java 8부터 지원, 함수형 인터페이스 지정.
- 개인용 어노테이션도 만들기 가능.
- public @interface AnnotationName {} 과 같은 형태
'JAVA' 카테고리의 다른 글
HttpURLConnection 이용해서 REST API 사용하기 (0) | 2020.04.02 |
---|---|
블랙잭 게임 코드 피드백 #2 (0) | 2020.03.29 |
이것이 자바다 6장 클래스 정리 #1 (0) | 2020.03.26 |
블랙잭 게임 코드 피드백 #1 (0) | 2020.03.25 |
블랙잭 게임 구현 #2 (+코드 공유) (0) | 2020.03.18 |
댓글