728x90
클래스에 선언된 멤버 변수/ 멤버 메소드는 static 여부에 따라 아래와 같이 불려진다.
* 인스턴스 변수 : static이 안붙은 변수, 인스턴스를 생성한 다음에(new 생성자(); 호출된 다음에) 사용할 수 있는 변수
* 인스턴스 메소드 : static이 안붙은 메소드, 인스턴스를 생성한 다음에(new 생성자(); 호출된 다음에) 사용할 수 있는 메소드
* 클래스 변수(static 변수) : 클래스의 멤버 변수들 중에서, 인스턴스를 생성하지 않아도 사용할 수 있는 변수
* 클래스 메소드(static 메소드) : 인스턴스를 생성하지 않아도 사용 할 수 있는 메소드
클래스 변수 / 메소드의 특징(static)
1. 메모리의 "메소드 영역"에 클래스가 로드 될 때(프로그램 시작될 때) "한번만" 생긴다.
2. 인스턴스가 생성되지 않아도 사용할 수 있다.
* 클래스이름.static변수, 클래스이름.static메소드() 이렇게 사용한다.
3. 모든 인스턴스는 하나의 static 변수 / 메소드를 "공유"한다.
* Singleton 디자인 패턴 : 반드시 "하나"의 인스턴스만 유지되어야 하는 객체 설계
* 객체를 new 를 사용하여 생성하지 않고, getInstance() 를 사용하여 생성한다.
728x90