Chapter 06 객체지향 프로그래밍 (2)
싱글톤 (singleton)
- 단 하나의 객체
public class 클래스{
//정적필드
private static 클래스 singleton = new 클래스();
//생성자
private 클래스(){}
//정적 메서드
static 클래스 getInstance(){
return singleton;
}
}
- 싱글톤은 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야한다.
private 제한자를 걸어준다. (참고로 클래스 내부에서는 new연산자로 생성자 호출 가능)
정적 필드도 private 제한자를 붙혀서 필드값 변경을 하지 못하게 막고
대신, 외부에서 호출할 수 있는 정적 메서드인 getInstance()을 선언하고 정적 필드에서 참조하고 있는 자신의 객체를 리턴해준다.
외부에서 객체를 얻는 유일한 방법은 getInstance()메소드를 호출하는 방법이다
getInstance() 메서드는 단 하나의 객체만 리턴하기 때문에 아래 코드에서 변수1과 변수2는 동일한 객체를 참조한다.
클래스 변수1 = 클래스.getInstance();
클래스 변수2 = 클래스.getInstance();
final 필드
- 초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램을 실행 도중에 수정할 수 없다.
상수
- 상수는 대문자로 작성하는 것이 관례!
- [static filnal 타입 상수 = 초기값;]
- 한 번 초기값 저장되면 변경할 수 없음!!
- 원주율 파이나 지구의 무게 및 둘레 같은 불변의 값 저장하는 필드
접근 제한자
public : 외부 클래스 다른 패키다 다 가능
protected : 같은 패키지 또는 자식클래스에서 사용 가능
private: 외부에서 사용될 수 없음!!
default : 같은 패키지에 소속된 클래스만 가능
Getter Setter
-필드를 private를 선언하면 getter setter로 메서드를 작성해서 피드값을 안전하게 변경/사용한다.
외부로 전달하는 메서드가 getter 값을 변경하는 역할을 setter
getter 는 리턴타입이 있고, 리턴값을 받는다.
setter는 리턴타입이 void 매개 변수는 필드타입이다.
-source - generate Getters and Seggers 를 누르면 자동 생성 가능!