1. Access Modifier
클래스 외부에서 클래스 내부의 멤버 변수나 메소드로의 접근을 제어하는 Keyword를 Access Modifier라고 한다.
- 같은 클래스 내부에서만 접근이 가능하다. -> 같은 패키지 내부에서는 private만 제외하고 모두 접근이 가능하다.
- default 는 같은 패키지에 속하거나 같은 클래스여야 접근이 가능하다.
- protected는 같은 클래스, 같은 패키지, 자손클래스에 접근이 가능하다. 상속관계가 있을때 자식클래스가 부모클래스의 protected로 접근이 가능하다.
- public 은 접근 제한이 전혀 없다.
public > protected > default > private
final
- 멤버필드 앞에 쓰면 값 변경이 불가능하다. 변수를 상수화 시켜주는것
- 메소드 앞에 쓰면 오버라이딩이 불가능하다
- 클래스 앞에 쓰면 상속이 불가능하다
static
- 객체들 간에 공유되는 유일한 값이다.
- 객체 생성없이 바로 클래스 이름으로 사용할수있다. static변수 같은 경우 Class Area(클래스변수)에 한번 등록이 되고 heap 메모리에 등록된 객체(인스턴스 변수)들이 static변수를 참조해서 값을 찾게된다.
- 멤버필드, 메소드, Block 에 사용할수있다.
- static 블록은 main보다 가장 먼저 실행되는데 main 전에 어떤 준비작업이 필요한경우 static 블록을 사용한다.
static method 내부에서는 this, super 키워드 사용이 불가능하다. static은 컴파일을 끝내고 실행하기 전 단계에서 미리 Class Area에 등록된다. 즉 static 변수나 메소드와는 다르게 객체 생성 후 사용되는 this, super Keywords간 생성시점의 차이가 있기 때문이다.
public static void main(String[] args) {
//static method 안에서는 this, super 키워드 사용 불가능
System.out.println(this.num); // 에러 발생
}
2. Singleton 디자인 패턴
객체 생성시에 공통된 인스턴스 하나만을 가지고 사용해야 할때 이 방법을 사용한다. 예를 들어 각각의 클래스들을 모두 관리하는 관리자 클래스가 필요할때 이 관리자 클래스를 오직 하나만 생성할때 사용한다.
- Singleton 조건
- field : private ,static 수식어가 붙어야한다. type은 자기 자신의 클래스 타입을 사용한다.
- 생성자 : private. private 으로 접근을 제한해서 외부에서 생성하지 못하는 역할을 한다.
- 객체를 만들어서 반환해주는 public static method 가 존재해야한다.
/* SingletonObject 예제 코드*/
public class SingletonObject {
//field
private static SingletonObject instance; //타입이 자기자신 클래스.
//생성자
private SingletonObject() {}
//public method : 외부에서 사용 가능한 메소드
public static SingletonObject getInstance() {
if(instance == null)
instance = new SingletonObject(); // 딱 한번 생성된다.
return instance;
}
}
'JAVA' 카테고리의 다른 글
싱글턴(Singleton)패턴 이란? - 싱글톤 구현 방법 6가지 (0) | 2021.06.27 |
---|---|
Comparable , Comparator 인터페이스 차이점 (0) | 2021.02.15 |
JAVA - 10진수를 2진수, 8진수로 변환하기 (0) | 2021.02.10 |
Collection 중복체크 - equals(), hashCode() (0) | 2021.01.31 |
JVM Memory 구조 (0) | 2021.01.31 |