@markdown
# Java 접근제한자
____
- `static` : class 메소드이기 때문에 Object 생성과는 무관하다.
<pre><code class="java" style="font-size:14px">class Calculator {
static double pi = 3.141592;
static {
pi += 10;
System.out.println(pi);
}
public Calculator() {
System.out.println("Calculator 생성자");
}
}
</code></pre>
- `static` 영역이 메모리에 올라오며, `static` 영역에서는 `static`만 사용 가능하다.
- `static` 블록이 먼저 수행되고, 생성자는 나중에 실행된다.
- `static` 블록에서는 `static`이 아닌 변수는 사용할 수 없다.
- `final` 필드 : 값 수정 불가(상수)
- `final` 메소드 : 재정의(Override - 덮어쓰기) 불가
- `final` 클래스 : 상속 불가
<pre><code class="java" style="font-size:14px">실행결과
13.141592
Calculator 생성자
</code></pre>
## Singleton 패턴
____
- 싱글톤 : 하나의 애플리케이션 내에서 단 하나만 생성되는 객체
- 만드는 방법 : 외부에서 `new` 생성자를 호출 할 수 없도록 막기위해 `private static`으로 생성
<pre><code class="java" style="font-size:14px">class Singleton { //싱글톤 객체
private static Singleton singleton; //메모리에 올라오지만, 외부에서 접근 불가
static {
singleton = new Singleton();
//메모리 로드
}
private Singleton(){
//외부에서 new 못하게 private 생성자
}
//외부에서 호출 할 수 있도록 public static
public static Singleton getSingleton(){
//Singleton.getSingleton() 하면 싱글톤객체가 반환된다.
return singleton;
}
}
</code></pre>
<pre><code class="java" style="font-size:14px">public class SingletonTest {
public static void main(String[] args) {
Singleton s1 = Singleton.getSingleton();
Singleton s2 = Singleton.getSingleton();
System.out.println(s1 == s2);
}
}
</code></pre>
<pre><code class="java" style="font-size:14px">실행결과
s1 == s2는 하나의 싱글톤 객체에 접근하며, 같은 주소를 가지고 있으므로 true가 반환된다.
</code></pre>
'Java' 카테고리의 다른 글
Java 문법 - hashCode(), 객체 복제 (0) | 2017.05.02 |
---|---|
Java 문법 - Inner 클래스, 예외처리 (0) | 2017.05.01 |
Java 문법 - 추상클래스, 인터페이스 (1) | 2017.04.28 |
Java 정규식 표현 정리 (0) | 2017.04.27 |
Java 문법 - 변수형, 연산자 (0) | 2017.04.26 |