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에서 참조하고 있는 자신의

객체를 리턴해 준다.