[JAVA] 07 클래스와 객체
클래스와 객체는 자바의 핵심 개념이다. 앞에서 배운 변수와 메서드는 클래스 안에서 의미를 가지며, 객체를 통해 실제로 사용된다.
1. 클래스란
클래스(Class)는 객체를 만들기 위한 설계도다. 변수(필드)와 메서드를 하나의 단위로 묶는다.
class Person {
String name;
int age;
}
클래스 자체는 실제 데이터가 아니다. 객체를 생성하기 위한 틀이다.
2. 객체란
객체(Object)는 클래스를 기반으로 생성된 실체다. Heap 메모리에 실제로 생성된다.
Person p = new Person();
- Person : 클래스 타입
- p : 참조 변수 (Stack 영역)
- new : Heap에 객체 생성
참조 변수에는 객체의 주소값이 저장된다.
3. 필드(Field)
class Person {
String name;
int age;
}
필드는 객체의 상태(state)를 나타낸다. 객체마다 각각 독립적인 값을 가진다.
Person p1 = new Person();
Person p2 = new Person();
p1.name = "Kim";
p2.name = "Lee";
System.out.println(p1.name);
System.out.println(p2.name);
OUTPUT
Kim
Lee
4. 메서드(Method)
class Person {
void sayHello() {
System.out.println("Hello");
}
}
Person p = new Person();
p.sayHello();
OUTPUT
Hello
메서드는 객체의 동작(behavior)을 정의한다.
5. 생성자(Constructor)
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
}
Person p = new Person("Kim", 20);
System.out.println(p.name);
OUTPUT
Kim
생성자는 객체 생성 시 자동 호출된다. 객체 초기화를 담당한다.
6. 기본 생성자
생성자를 하나도 정의하지 않으면 컴파일러가 기본 생성자를 제공한다.
단, 생성자를 하나라도 정의하면 기본 생성자는 자동 생성되지 않는다.
7. this 키워드
class Person {
String name;
Person(String name) {
this.name = name;
}
}
this는 현재 객체 자신을 가리킨다.
8. static (클래스 변수와 메서드)
static은 객체가 아닌 클래스에 속한다. 모든 객체가 공유한다.
class Person {
static int count = 0;
Person() {
count++;
}
}
new Person();
new Person();
System.out.println(Person.count);
OUTPUT
2
static 변수는 클래스 영역(Method Area)에 저장된다.
9. 객체 생성 과정
- 1) new 키워드 실행
- 2) Heap에 객체 생성
- 3) 필드 기본값 초기화
- 4) 생성자 실행
- 5) 참조 변수에 주소 저장
10. 객체 배열
Person[] people = new Person[2];
people[0] = new Person("Kim", 20);
people[1] = new Person("Lee", 25);
System.out.println(people[0].name);
OUTPUT
Kim
배열에는 객체 자체가 아니라 참조가 저장된다.
11. 인스턴스 vs 클래스
- 인스턴스 변수 → 객체마다 별도 존재
- 클래스(static) 변수 → 모든 객체가 공유
- 인스턴스 메서드 → 객체 필요
- static 메서드 → 객체 없이 호출 가능
12. 실무 관점 설계 기준
- 필드는 private로 선언
- 외부 접근은 메서드를 통해 제어
- 생성자는 객체 초기 상태를 보장해야 한다
- 클래스는 하나의 책임만 가지도록 설계한다
정리
- 클래스는 설계도, 객체는 실체다.
- 객체는 Heap에 생성된다.
- this는 현재 객체를 가리킨다.
- static은 클래스에 속한다.
- 객체지향은 상태와 동작을 함께 묶는 개념이다.
'Computer Science > Java' 카테고리의 다른 글
| [JAVA] 10 컬렉션(List / Set / Map)과 제네릭 (0) | 2026.02.15 |
|---|---|
| [JAVA] 08 객체지향(OOP) 4대 특징 (0) | 2026.02.15 |
| [JAVA] 06 메서드(Method) (0) | 2026.02.15 |
| [JAVA] 05 배열(Array) (0) | 2026.02.15 |
| [JAVA] 04 반복문 for / while (0) | 2026.02.15 |