메모리에서 사용하고 싶은 객체가 있다면 우선 설계도로 해당 객체를 만드는 작업이 필요하다. 자바에서는 설계도가 바로 클래스(class)
이다. 클래스에는 객체를 생성하기 위한 필드와 메소드가 정의되어 있다. 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(instance)
라고 한다. 그리고 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다.
클래스 이름은 다른 클래스와 식별할 목적으로 사용되므로 자바의 식별자 작성 규칙에 따라서 만들어야 한다.
작성 규칙 | 예 |
---|---|
하나 이상의 문자로 이루어져야 한다 | Car, SportsCar |
첫 번째 글자는 숫자가 올 수 없다 | Car, 3Car(x) |
'$', '_'외의 특수 문자는 사용할 수 없다 | $Car, _Car, @Car(x), #Car(x) |
자바 키워드는 사용할 수 없다 | int(x), for(x) |
public class 클래스이름{
}
여기서 public class 키워드는 클래스를 선언할 때 사용하며 반드시 소문자로 작성해야 한다. 클래스 이름 뒤에는 반드시 중괄호 { }를 붙여주는데, 중괄호 시작 {는 클래스 선언의 시작을 알려주고 중괄호 끝 }은 클래스 선언의 끝을 알려준다.
클래스로부터 객체를 생성하는 방법은 new 연산자
를 사용하면 된다.
new 클래스();
new는 클래스로부터 객체를 생성시키는 연산자이다. new 연산자 뒤에는 생성자가 오는데, 생성자는 클래스() 형태를 가지고 있다. new 연산자로 생성된 객체는 메모리 힙(heap)
영역에 생성된다. new 연산자는 힙 영역에 객체를 생성시킨 후, 객체의 주소를 리턴하도록 되어있다.
클래스 변수;
변수=new 클래스();
클래스 변수 선언과 객체 생성을 한 개의 실행문으로 작성할 수도 있다.
클래스 변수=new 클래스();
클래스는 두 가지 용도가 있다. 하나는 라이브러리(API)용이고 다른 하나는 실행용이다. 라이브러리 클래스는 다른 클래스에서 이용할 목적으로 설계된다. 프로그램 전체에서 사용되는 클래스가 100개라면 99개는 라이브러리이고 단 하나가 실행 클래스이다. 실행 클래스는 프로그램의 실행 진입점인 main() 메소드를 제공하는 역할을 한다.
구성 멤버에는 필드(Field), 생성자(Constructor), 메소드(Method)
가 있다. 이 구성 멤버들은 생략되거나 복수 개가 작성될 수 있다.
public class ClassName{
//필드
int fieldName; //객체의 데이터가 저장되는 곳
//생성자
ClassName(){
...
}
//메소드
void methodName(){
...
}
}
필드는 객체의 고유 데이터, 부품 객체, 상태 정보를 저장하는 곳이다. 선언 형태는 변수와 비슷하지만, 필드를 변수라고 부르지 않는다. 변수는 생성자와 메소드 내에서만 사용되고 생성자와 메소드가 실행 종료되면 자동 소멸된다. 하지만 필드는 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재한다.
생성자는 new 연산자로 호출되는 특별한 중괄호 { } 블록이다. 생성자의 역할은 객체 생성 시 초기화
를 담당한다. 필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비를 한다. 생성자는 메소드와 비슷하게 생겼지만, 클래스 이름으로 되어있고 리턴 타입이 없다.
메소드는 객체의 동작에 해당하는 중괄호 { } 블록을 말한다. 중괄호 블록은 이름을 가지고 있는데, 이것이 메소드 이름이다. 메소드는 필드를 읽고 수정하는 역할도 하지만, 다른 객체를 생성해서 다양한 기능을 수행하기도 한다. 메소드는 객체 간의 데이터 전달의 수단으로 사용된다.
외부로부터 매개값을 받을 수도 있고, 실행 후 어떤 값을 리턴할 수도 있다.