JAVA
static main, 접근제한자, 싱글톤정의
docc
2021. 7. 22. 22:24
static & main
public static void main(String[] args)}{}
static인 메인함수는 클래스마다 하나씩만 가질 수 있는데
static이기 때문에 method(static)영역으로 자바 시작시 모든 스레드가 공유하는 함수다.
(method 영역의 값들은 자바 실행시 생성되어 있다.
클래스의 필드와 메서드는 생성자를 생성해야 heap영역에 올라온다.
그러고나서 main에서 사용 가능하다.)
접근제한자
접근제한자 | 모든 클래스(모든 패키지) | 상속관계 | 동일패키지 | 동일 클래스 |
public | O | O | O | O |
protected | X | O | O | O |
(default) | X | X | O | O |
private | X | X | X | O |
싱글톤(singleton)
프로그램에서 단 한개의 객체만 생성하도록 해야 하는 경우가 있다.
객체가 단 한개만 생성된다고 해서 이러한 객체를 싱글톤이라고 한다.
싱글톤을 만들려면
1. 외부에서 new연산자로 생성자를 호출할 수 없도록 막아야 하는데 이는 생성자를 호출한 수 만큼
객체가 생성되기 때문이다. 생성자를 외부에서 호출할 수 없도록 하려면 생성자 앞에 private라는
접근제한자를 붙여 주면 된다.
2. 자신의 타입인 정적필드를 하나 선언하고 자신의 객체를 생성하고 초기화 한다. 그리고 내부에서
new연산자로 생성자를 호출해서 객체를 생성하고 이 정적필드(singleton)을 private접근제한자로
선언해서 외부에서 필드값을 변경하지 못하도록 한다.
3. 외부에서 직접 자신의 객체에 접근하지 못하도록 막는 대신에 외부에서 호출할 수 있도록 정적
메서드 getter메서드 getInstance()를 선언하고 정적필드인 singleton에서 참조하고 있는 자신의
객체를 리턴해 준다.