JAVA – 객체와 STATIC에 대한 고찰

객체와 STATIC에 대한 고찰

  • 클래스 안에 있는 정적인 객체는 인스턴스화가 여러 번 되면 영향을 받지 않는다.

클래스 안에 static을 쓰면 해당 내용은 객체와 따로 놀게 된다. (클래스 안에서만 논다.)
즉 static jbutton을 하면 이 버튼이 속한 클래스를 2개 이상 객체화시키면 버튼은
화면에 나올 수 없다. 
static ArrayList를 하면 더욱 신기하다. 객체와 따로 노는 
동적 배열 요소의 크기는 이 배열이 속한 클래스를 2개 이상 객체화시킬 때 
n배로 늘어난다.

만약 A클래스로 객체를 2개 생성했는데 B클래스에서 A클래스 안에 있는 버튼을 가져 온다면
어느 객체에서 가져 오게 되는가? 
답은 2개 중 어느 객체에서도 가져올 수 없다. A클래스 안에 있는 버튼을 가져 오려면 A클래스를 다시
인스턴스화하거나 A클래스 안에 있는 버튼이 정적이어야만 한다. 고로 앞서 만든 2개의 객체에서 
버튼을 가져올 수는 없다.

위 사실을 이해하면 다음과 같은 문제를 해결할 수 있다.
=> 객체(A) 안에 컴포넌트가 있을 때, 그 컴포넌트를 가지고 객체(A)가 속한 배열의 인덱스를 알 수 있다.
Logic) 클래스(A)안에 static 동적 배열을 만들고 인스턴스화 할 때마다,컴포넌트를 static동적 배열에 넣자.
객체(A)가 만들어질 때마다 동적 배열의 크기는 늘어난다. 
그럼 역으로 객체(A)에 있는 컴포넌트 입장에서 동적 배열에 속한 인덱스를 알면
객체(A)가 인덱스가 몇인지 알 수 있다. 인덱스가 n이면 객체(A)가 속한 배열의 인덱스도 n이다. 
단 객체(A)가 속한 배열은 객체(A)만을 요소로 가진다.

Leave a Reply

Your email address will not be published. Required fields are marked *