Programming

[JAVA] JAVA 인스턴스 : Class와 Instance의 차이

JMob 2015. 7. 1. 13:55
728x90
반응형

공부를 하다 보면 인스턴스와 클래스라는 단어를 같이 사용한다. 두 단어의 차이와 사용법을 정리 해 본다.


JAVA는 객체지향적 언어로 모든 요소들을 CLASS 단위로 만들어서 사용한다.


사람들이 많이 쓰는 언어인 C나 C++을 보면 프로그램의 시작은 main()으로 시작이 되고 이것은 사실 그냥 함수에 불과하다.


하지만 JAVA의 경우에는 main() 또한 클래스 맴버로서 존재하고 이 부터 시작하게 된다.


그래서 우리는 항상 CLASS를 정의 해서 사용하게 되는 것이다. 


자바에서는 클래스를 다양한 용도로 사용하지만 기본적으로는 하나의 객체를 정의하는 것이다.


그래서 사람에 대한 객체를 만들게 되면,


class 사람

{

int 나이;

int 몸무게;

String 이름;


void 말하기()

{

"저는 누구누구입니다."

}

}


위의 형태는 간략하지만... 저런 식으로 정의 해서 사용한다.


하지만 저것은 그냥 코드에 불과하다.


우리가 실제로 컴퓨터 상에서 사용할려고 하면 메모리 상에 선언을 해서 사용해야 한다. 즉


사람 A = new 사람();


과 같은 형태로 선언하여 A에 메모리를 할당하고 사용하는 것을 인스턴스라고 한다.


그런데 또 좀 더 보게 되면 클래스 변수, 인스턴스 변수, 클래스 매소드, 인스턴스 매소드라는 용어가 등장 한다....


이를 이해하기 위해서는 static 키워드가 어떻게 동작하는지 알아야한다.


기본적으로 static 키워드가 붙으면 해당 클래스나 변수나 메소드는 프로그램이 시작하면서 바로 메모리에 할당된다.


즉 따로 인스턴스를 만들지 않더라도 이미 메모리에 올라가 있는것이다.


그렇기 때문에 static 변수의 경우 클래스로 여러 인스턴스를 만들었을 때 인스턴스 클래스의 메모리에 할당 되지 않는다.


이러한 특성 때문에 static이 붙은 변수나 메소드를 클래스 변수, 클래스 메소드라고 한다. 


머 그렇다면 인스턴스 변수나 메소드는 선언하면서 메모리에 올라가는 요소들을 칭하는거란걸 알 수 있을 것이다.

728x90
반응형