02. Singleton, Final

2020. 1. 12. 01:26CSE/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