JAVA

자바 클래스와 객체 — 설계도와 실물(객체지향 첫걸음)

PANCO_IT
#자바#JAVA#클래스#객체#객체지향

클래스는 설계도, 객체는 실물이라는 비유를 담은 그림

클래스는 틀(설계도), 객체는 그 틀로 찍어낸 실물입니다.

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();            // 메서드 호출 → 바둑이가 멍멍 짖습니다.

객체를 쓰는 3단계: 클래스 정의, new로 생성, 점으로 사용

정의하고(설계도), 찍어내고(new), 점으로 불러 씁니다.

순서는 늘 같습니다. 클래스를 정의하고, new객체를 생성하고, .으로 멤버를 사용합니다. 이 세 박자가 객체지향의 기본 리듬입니다.

직접 실행해 보기

아래 코드를 그대로 돌려 보고, name을 바꾸거나 bark()를 한 번 더 호출해 결과가 어떻게 달라지는지 확인해 보세요.

Dog 클래스와 객체
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를 빼먹으면 실물이 없어 쓸 수 없습니다.

미니 퀴즈

개념을 제대로 잡았는지 직접 풀어 봅니다. 정답은 눌러야 나옵니다.

미니 퀴즈

OX 2문제 + 4지선다 3문제


포켓코딩(JAVA2) 1편 · 예제 출처: 강사 개인 GitHub 저장소. 다음 편: 메서드 — 코드에 이름을 붙여 재사용하기.

PANCO_IT

IT 지식을 정리하는 개발자

관련 글