객체를 정의하는 틀 또는 설계도와 같은 의미로 사용된다.
자바에서는 이러한 설계도인 클래스를 가지고, 여러 객체를 생성하여 사용한다.

클래스는 크게 필드(Field), 메소드(Method), 생성자(Constructor)로 구성되며, 이 외에도 내부 클래스(Inner Class)와 같은 다양한 요소를 포함할 수 있다.🛠️
객체의 상태나 특성을 나타내는 변수이다. 클래스 내에서 선언되며, 객체가 가지고 있는 데이터를 저장한다.
객체가 수행할 수 있는 행동이나 기능을 정의한 코드 블록이다. 특정 작업을 수행하거나 값을 반환하는 역할을 한다.
클래스로부터 객체를 생성할 때 초기화를 담당하는 특별한 메소드이다. 클래스 이름과 동일하며, 객체 생성 시 자동으로 호출된다.

new 키워드를 이용하여 객체를 생성한다.
클래스에 의해 만들어진 객체로 특정 객체가 어떤 클래스의 객체인지 관계 위주로 설명할 때 사용한다. 클래스로 객체를 만드는 것을 '인스턴스화'라고 한다.
예를 들어 Animal cat = new Animal();에서 _"cat은 인스턴스이다"보다는 "cat은 객체이다"라는 표현이, "cat은 Animal의 객체이다"보다는 "cat은 Animal의 인스턴스이다"라고 표현한다.
접근 제어자와 함께 class 키워드를 사용하여 선언한다.
class Circle {.
int radius; //원의 반지름 필드
String name; //원의 이름 필드
public double getArea() { //멤버 메소드
return 3.14 * radius * radius;
}
}
선언한 클래스를 가지고 Circle객체의 인스턴스를 생성할 수 있다.
Circle pizza;
Circle객체를 생성한 것이 아니라 변수 pizza는 Circle클래스의 객체에 대한 주소를 가지는 변수이다.
new 연산자로 객체를 생성한다. 생성된 Circle객체의 주소를 pizza 변수에 대입한다.
pizza = new Circle();

객체의 멤버에 접근할 때는 레퍼런스 변수 뒤에 .연산자를 붙인다. radius에 10을 저장한다.
pizza.radius = 10;

| 변수의 종류 | 선언 위치 | 생성 시기 | 특징 |
|---|---|---|---|
| 클래스 변수 | 클래스 영역 | 클래스가 메모리에 올라갈 때 | - '클래스이름.클래스변수명'으로 접근- 자동 초기화 - static, 값 공유 |
| 인스턴스 변수 | 클래스 영역 | 인스턴스 생성 시 | - '참조변수.인스턴스변수명'으로 접근- 자동 초기화 |
| 지역변수 | 메서드 영역 | 변수 선운문 수행 시 | - 블록 소멸되면 자동 소멸 - 자동 초기화 X |
객체가 생성될 때마다 각 객체에 대해 생성되는 변수로, 객체마다 고유한 상태를 가질 수 있습니다.
인스턴스 생성 후, '참조변수.인스턴스변수명'으로 접근이 가능하다.
클래스 변수는 static 키워드를 사용하여 선언되며, 해당 클래스의 모든 인스턴스가 공유하는 변수이다.
클래스가 메모리에 로드될 때 생성되며, 프로그램이 종료될 때까지 유지된다.
인스턴스 생성 없이 '클래스이름.클래스변수명'으로 접근이 가능하다.
메서드 내부에서 선언되며, 메서드의 실행이 시작될 때 생성되고, 메서드가 종료될 때 소멸하는 변수이다.
지역 변수는 선언된 메서드 또는 블록 내에서만 접근할 수 있으며, 외부에서는 접근할 수 없다.
class test {
int a; // 인스턴스 변수
static int b; // 클래스 변수 (static 변수, 공유 변수)
// 메서드 영역
void method() {
int a = 0; // 지역변수
}
}
[1]: JVM은 자바 가상 머신으로, 자바 애플리케이션을 운영 체제와 독립적으로 실행할 수 있게 해주는 가상 컴퓨터이다.