본문 바로가기
JAVA

이것이 자바다 6장 클래스 정리 #2

by mingutistory 2020. 3. 27.
728x90

싱글톤(Singleton) : 하나의 객체만 존재해야 하는 경우.

- 클래스 외부에서 생성자를 호출 가능하면 안됨 = 생성자 앞에 private을 붙여 줘야 함. 

 

class Singleton {
	private static Singleton singleton = new Singleton();
	
	private Singleton() {}
	
	static Singleton getInstance() {
		return singleton;
	}
}

- 외부에서 사용 할 때 객체를 얻는 유일한 방법은 getInstance() 메소드를 호출하는 것 = 단 하나의 객체만 리턴 함.

* 아직은 잘 사용 할 이유는 모르겠지만

https://jeong-pro.tistory.com/86

 

싱글톤 패턴(Singleton pattern)을 쓰는 이유와 문제점

싱글톤 패턴(Singleton Pattern) 싱글톤 패턴 애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 인스턴스를 만들어 사용하는 디자인패턴. 생성자가 여러 차례 호출되더..

jeong-pro.tistory.com

위의 사이트에서 확인 가능

 

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 {} 과 같은 형태

 

 

 

300x250

댓글