static 키워드
클래스를 설계 할 때에는 내가 표현하고자 하는 속성과 동작을 분석하여 클래스를 만듭니다.
따라서 클래스는 속성(맴버변수)와 동작(맴버메소드) 생성자로 구성됩니다.
만약, 어떠한 클래스의 객체를 생성하면 그 클래스를 구성하고 있는 맴버변수들 만큼 메모리가 생성됩니다.
즉, 클래스의 맴버변수들은 객체마다 따로 메모리가 확보됩니다. 객체를 생성해야지만 메모리가 생성됩니다.
그런데 만약 모든 객체가 공동으로 사용할 기억공간이 필요하거나 객체와 무관하게 객체 없이도 사용할 기억공간이 필요하다면 클래스를 만들때에 맴버변수이름 앞에 static을 붙여서 변수를 만듭니다.
이렇게 클래스를 만들때에 맴버변수이름 앞에 static이 붙은 변수를 static 변수 혹은 정적 변수 혹은 클래스 변수라고 합니다.
이러한 클래스변수는 객체없이도 바로 사용할 수 있으면 객체 없이 사용하기 위해서는 클래스이름.변수명 으로 사용합니다. 그래서 "클래스변수"라고 합니다.
만약 객체가 있다면 객체참조변수를 통해서도 사용할 수 있어요. 이때에는 객체마다 별도의 메모리를 갖는 것이 아니라 모든 객체가 동일한 메모리를 갖습니다.
메소드의 경우도 마찬가지 입니다. 어떠한 클래스의 맴버메소드를 사용하기 위해서는 반드시 그 클래스의 객체를 생성하고 객체를 통해서 사용할 수 있습니다.
그런데 만약, 객체와 무관하게 객체를 생성하지 않고도 동작시키고자 하는 메소드가 필요하다면 메소드이름 왼쪽에 static을 붙입니다.
이러한 메소드를 클래스 메소드(static 메소드, 정적 메소드)라고 합니다.
static 메소드는 객체 없이도 사용할 수 있으며 만약 객체가 있다면 객체를 통해서도 사용할 수 있습니다.
static 메소드는 객체 없이도 사용할 수 있는 메소드입니다.
어떤 클래스의 static이 아닌 일반 맴버변수는 반드시 객체를 생성해야만 사용할 수 있는 변수입니다.
따라서, static 메소드에서는 일반 맴버변수에 접근할 수 없습니다.
static 메소드에서는 static 맴버에만 접근할 수 있습니다
'프로그래밍 공부 정리 > java' 카테고리의 다른 글
재귀호출 (0) | 2021.10.26 |
---|---|
Call by Reference, Call by Value, 메소드 오버로딩 (0) | 2021.10.25 |
this키워드, 생성자 (0) | 2021.10.23 |
객체지향 프로그래밍의 특징 1) 은닉성(Encapsulation) (0) | 2021.10.22 |
객체와 클래스, 객체지향 프로그래밍 (0) | 2021.10.21 |