Class는 건물을 지을 때 필요한 설계도와 같다. 그리고 객체(Object)는 설계도를 이용하여 완성된 건물을 의미한다. 즉 Class는 객체를 만들기 전 생성해놓은 java 소스로된 class로 정의한 파일을 의미하며 객체는 class로 정의된 파일을 통해 생성해낸 것이다.
클래스 헤더
[접근 제한자] [클래스 종류] class 클래스명 {
}
다음과 같이 class를 정의할 수 있다. 접근 제한자에는 public, protected, default, private가 있고 클래스 종류로는 final, abstract과 생략시 일반 class가 존재한다.
멤버 필드
class 클래스명 {
[변수]
[상수]
}
멤버 필드에는 변수와 상수가 존재하고 변수란 프로그램이 실행되는 동안 값이 변경될 수 있는 값이고 상수는 final로 선언하여 프로그램이 종료될 때까지 절대로 변경되지 않는 값이다.
멤버 메서드
class 클래스명 {
int id
public int getId(){
return this.id;
}
}
프로그래밍을 하다보면 다음과 같이 get을 이용하여 값을 가져오는 형태를 봤을 것이다. 못봤다 해도 괜찮다. 이렇게 class 내에서 특정한 일을 수행하는 행위나 동작을 의미한다.
이렇게 class의 구조에 대해서 알아봤다. class를 생성하여 객체화 할 때 프로그램 필요에 따라 생성하고 사용할 수 있도록 재사용성과 이식성을 고려하여 설계해야한다.
객체 선언
Car car;
다음과 같이 Car라는 class를 car로 선언했다. 이런 객체 선언은 객체가 생성된 것이 아니라 참조 car라는 참조 변수가 메모리 영역 stack이라는 영역에 만들어지는 단계다.
객체 생성
car = new Car();
new라는 연산자를 통해 이제 메모리 내에 공간을 할당 받고 생성된 객체를 참조할 수 있는 참조변수(reference)를 할당 받았고 해당 주소를 car에 담았다. 객체는 생성자를 통해 만들어지고 여기서 메모리에 할당 받는 다는 것은 heap 영역에 저장되어진다는 것이다. heap 영역은 생성된 객체들이 GC에 의해 자동 소멸되어지는 공간이다.