
클래스는 틀(설계도), 객체는 그 틀로 찍어낸 실물입니다.
JAVA1에서 출력·변수·조건문·반복문까지 기초 한 바퀴를 돌았습니다. 지금까지는 명령을 위에서 아래로 쭉 나열하는 방식이었습니다. 이번 JAVA2 시즌부터는 프로그램을 사물 단위로 묶어 다루는 객체지향으로 넘어갑니다. 그 첫 단추가 오늘의 주제, 클래스와 객체입니다.
클래스는 설계도, 객체는 실물
가장 먼저 잡아야 할 그림은 이것 하나입니다. 클래스는 설계도이고, 객체는 그 설계도로 찍어낸 실물입니다.
쉽게 — 붕어빵 틀이 클래스라면, 그 틀로 구워 낸 붕어빵 하나하나가 객체입니다. 틀은 하나여도 붕어빵은 여러 개 나오듯, 클래스 하나로 객체를 얼마든지 만들 수 있습니다. 틀 자체는 먹을 수 없다는 점도 중요합니다. 실제로 쓰는 것은 언제나 찍어낸 실물(객체)입니다.
클래스 만들기 — 필드와 메서드
클래스 안에는 두 가지를 담습니다. 객체가 가진 데이터(필드)와 객체가 하는 동작(메서드)입니다.
class Dog {
String name; // 필드: 객체가 가진 데이터
void bark() { // 메서드: 객체가 하는 동작
System.out.println(name + "가 멍멍 짖습니다.");
}
}
Dog라는 설계도에 "이름을 가진다"(name)와 "짖는다"(bark)를 적어 둔 것입니다. 아직 실물은 하나도 없습니다. 설계도만 그린 상태입니다.
객체 만들기 — new로 찍어내기
설계도로 실물을 찍어내는 명령이 new입니다. 만든 객체는 변수에 담아 두고, 점(.) 으로 그 안의 필드와 메서드를 꺼내 씁니다.
Dog d = new Dog(); // 설계도(Dog)로 실물(객체) 하나 생성
d.name = "바둑이"; // 필드에 값 넣기
d.bark(); // 메서드 호출 → 바둑이가 멍멍 짖습니다.

정의하고(설계도), 찍어내고(new), 점으로 불러 씁니다.
순서는 늘 같습니다. 클래스를 정의하고, new로 객체를 생성하고, .으로 멤버를 사용합니다. 이 세 박자가 객체지향의 기본 리듬입니다.
직접 실행해 보기
아래 코드를 그대로 돌려 보고, name을 바꾸거나 bark()를 한 번 더 호출해 결과가 어떻게 달라지는지 확인해 보세요.
class Dog {
String name;
void bark() {
System.out.println(name + "가 멍멍 짖습니다.");
}
}
public class Main {
public static void main(String[] args) {
Dog d = new Dog();
d.name = "바둑이";
d.bark();
}
}설계도(Dog) 하나로 d2, d3처럼 객체를 여러 개 만들어 각각 다른 이름을 넣어 보면, "틀 하나로 실물 여러 개"라는 말이 손에 잡힙니다.
단골 함정 — new를 빼먹기
가장 자주 막히는 곳입니다. 변수를 선언만 하고 new로 객체를 만들지 않으면, 이름표만 있고 실물이 없어 사용할 수 없습니다.
Dog d; // 이름표만 만든 상태 (실물 없음)
d.bark(); // 오류: 가리키는 객체가 없어 호출 불가
규칙 — 객체는 반드시
new로 만들어서 변수에 연결해야 씁니다. 선언(Dog d;)은 "상자를 놓은 것"일 뿐이고, 그 안에 실물을 담는 일은new Dog()가 합니다. 실행 중 "가리키는 값이 없다"는 오류가 난다면, 십중팔구new를 빠뜨린 것입니다.
한 장 정리
| 용어 | 뜻 | 비유 |
|---|---|---|
| 클래스 | 데이터와 동작을 묶은 설계도 | 붕어빵 틀 |
| 객체 | 클래스로 만든 실물 | 붕어빵 |
| 필드 | 객체가 가진 데이터 | 붕어빵 속 재료 |
| 메서드 | 객체가 하는 동작 | 붕어빵이 하는 일 |
| new | 객체를 만드는 명령 | 틀로 굽기 |
이것만 기억하면 됩니다. 클래스는 설계도, 객체는 실물입니다. 클래스 안에 필드(데이터) 와 메서드(동작) 를 담고, new로 객체를 만든 뒤 .으로 꺼내 씁니다. new를 빼먹으면 실물이 없어 쓸 수 없습니다.
미니 퀴즈
개념을 제대로 잡았는지 직접 풀어 봅니다. 정답은 눌러야 나옵니다.
미니 퀴즈
포켓코딩(JAVA2) 1편 · 예제 출처: 강사 개인 GitHub 저장소. 다음 편: 메서드 — 코드에 이름을 붙여 재사용하기.