this.name = name ;
this.name의 name은 인스턴스 필드고 name은 매개변수이다.
this(매개변수, 값 , .. )
클래스의 다른 생성자 호출가능.
중복 코드 제거
정적 메소드 선언 시 this키워드 없이 정적 필드를 바로 사용 가능하다. 인스턴스 필드를 사용하고 싶다면 메소드 내부에 객체를 생성하고 사용한다.
전체 프로그램에서 어떤 클래스에 대해 단 하나의 객체만 만들게 허용한다면..여기서 생성된 객체를 싱글톤이라고 한다.
생성자에 static을 붙여 외부에서의 호출을 막는다.
필드에도 static을 붙여 외부에서 변경하지 못 하게 한다.
오직 getInstance( ) 메소드가 외부에서 객체를 사용하는 유일한 방법이다.
싱글톤의 정적 필드 선언, 초기화 방법
클래스 자신의 타입으로 정적 필드를 하나 선언하고, 선언한 그 정적 필드에 자신의 객체를 생성하여 초기화 한다.
public class Singleton {
private static Singleton singleton = new Singleton();
//정적 필드
Singleton() {}
//정적 생성자
static Singleton getInstance() {
return singleton;
}
}
싱글톤 객체는 단 하나이기 때문에 외부에서 참조하는 싱글톤 객체는 모두 동일하다.
외부 클래스에서 new 연산자 사용없이 도트(.)를 이용해 아래 형식처럼 바로 사용한다.
싱글톤클래스.getInstance()
필드 선언시 또는 생성자에서 초기값을 지정하면 그 값이 최종 값이 되는 필드이다.
static final
상수는 객체마다 존재하는게 아니라 클래스에만 존재한다.
default
같은 패키지에서만
public
모든 패키지에서
protected
같은 패키지 또는 다른 패키지의 자식 클래스에서만 사용 가능
private
내부 클래스 내부에서만
.
.
.
.
.
.
.
.
싱글톤_혼공자 p.279