02. Singleton, Final
2020. 1. 12. 01:26ㆍCSE/JAVA
* 싱글톤(Singleton)
: 단 하나의 객체만 만들도록 보장해야 하는 경우에 사용
외부에서 생성자 호출을 막기 위해 private를 붙인다
public class SingletonExample{
private static SingletonExample singleton = new SingletonExample();
//private static 클래스 singleton = new 클래스()
private SingletonExample(){} //private 클래스() {}
static SingletonExample getInstance(){
return singleton;
}
//static 클래스 getInstance(){ return singleton; }
}
public class SingletonPractice{
public static void main(String[] args){
SingletonExample obj1 = new SingletonExample();
//컴파일 에러 : 외부에서 싱글톤 객체 생성 불가능
SingletonExample obj2 = SingletonExample.getInstance();
SingletonExample obj3 = SingletonExample.getInstance();
// 외부에서는 메소드 호출을 통해 객체 사용 가능
// 이 때 객체가 하나이므로 obj2 == obj3임
}
}
* final 필드
: 초기값이 저장되면 이것이 최종적인 값이 된다 = 값 수정 불가능
* 상수(static final)
: static이면서 final => 클래스에만 포함됨, 초기값이 저장되면 변경할 수 없다.
public class Student{
static final String class = "Number1"; //static final 타입 필드 = 초기값
final String name; ////final 타입 필드 = 초기값
int age;
public Student(String name, int age){
this.name = name;
this.age = age;
}
}
public class StudentExample{
public static void main(String[] args){
Stdent s1 = new Student("Sarah", 13);
s1.class = "Number2"; //상수(static final)는 값 수정 불가
s1.name = "Sally"; //final 필드는 값 수정 불가
s1.age = 14;
}
}
'CSE > JAVA' 카테고리의 다른 글
06. Exception (0) | 2020.01.20 |
---|---|
05. Anonymous Inner Class (0) | 2020.01.19 |
04. Nested Class, Nested Interface (0) | 2020.01.19 |
03. Annotation (0) | 2020.01.13 |
01. Static (0) | 2020.01.08 |