14. 클래스(Class)와 객체(Object)

박은서's avatar
Dec 16, 2025
14. 클래스(Class)와 객체(Object)

1. 클래스(Class)

교재 p.145-153 4.2 클래스와 객체 만들기

1️⃣ 클래스란?

객체를 만들기 위한 설계도(틀)
  • 어떤 상태(변수)와 행동(메서드)을 가질지 정의
  • 실체는 아니고 “모양을 정의한 청사진”
  • 사용자 정의 자료형
👉 클래스 = 설계도

2️⃣ 클래스의 기본 구조

class 클래스이름 { // 필드(변수) 자료형 변수명; // 생성자 클래스이름() {} // 메서드 반환타입 메서드명() {} }

3️⃣ 클래스의 구성 요소

1) 필드(Field, 멤버 변수)

  • 객체의 속성
  • Heap 영역에 저장
String name; int age;

2) 생성자(Constructor)

  • 객체 생성 시 자동 호출
  • 초기화 담당
  • 클래스 이름과 동일
Person (String name,int age) { this.name = name; this.age = age; }

3) 메서드(Method)

  • 객체의 동작
void introduce() { System.out.println(name); }

4️⃣ 클래스와 메모리 구조

Person p = new Person();
Stack Heap p ─────────▶ Person 객체
  • 참조 변수 → Stack
  • 실제 객체 → Heap

5️⃣ 클래스 설계 시 주의사항 ⭐

  • 필드는 private
  • 메서드로 접근 (getter/setter)
  • 하나의 클래스는 하나의 책임

6️⃣ 클래스의 종류

1) 일반 클래스 (Concrete Class)

객체를 만들 수 있는 실제 클래스
필드와 메서드를 완전한 형태로 가지고 있으며, 인스턴스 생성 가능
  • new 로 객체 생성 가능
class Dog { void sound() { System.out.println("멍멍"); } }
Dog d = new Dog(); // 객체 생성 가능

2) 추상 클래스 (Abstract Class)

하나 이상의 ‘미완성 메서드(abstract method)’를 포함할 수 있는 클래스
객체를 직접 만들 수 없고, 반드시 상속 받아 사용
  • abstract 키워드를 사용
  • 객체 생성 불가
abstract class Animal { abstract void sound(); // 추상 메서드 }
Animal a = new Animal(); // ❌ 에러
 

2. 객체(Object)

교재 p.145-153 4.2 클래스와 객체 만들기

1️⃣ 객체란?

현실 세계의 사물이나 개념을 프로그램 안에서 표현한 “데이터 + 행동의 묶음”
상태를 가진 모든 것
객체지향 프로그래밍(OOP)의 가장 기본 개념

2️⃣ 객체의 구성

  • 상태(State) → 데이터
  • 행위(Behavior) → 기능(메서드)
객체 = 속성(필드) + 기능(메서드)

3️⃣ 객체 사용

Person p = new Person(); p.name = "철수"; p.walk();
➡️ . 연산자로 접근

4️⃣ 비유

🚗 자동차 객체
구분
상태
색상, 속도, 연료
행동
가속(), 브레이크(), 정지()
class Car { String color; int speed; void accelerate() { speed +=10; } }
new Car() 로 생성된 것이 객체

5️⃣ 클래스 vs 객체 (헷갈림 포인트)

구분
클래스(Class)
객체(Object)
의미
설계도
실체
붕어빵 틀
붕어빵
생성
안 됨
개수
1개
여러 개
Car car1=new Car(); Car car2=new Car();
➡️ Car 는 클래스 / car1 , car2 는 객체

6️⃣ 객체의 4가지 핵심 특징 (OOP)

1) 캡슐화

  • 데이터 보호
  • 접근 제어 (private)
private int age;

2) 상속

  • 기존 객체 확장
  • 부모 클래스 기능 사용

3) 다형성

  • 같은 메서드, 다른 동작
Animal a = new Dog();

4) 추상화

  • 공통 개념만 표현
 

3. 인스턴스(Instance)

1️⃣ 인스턴스란?

클래스를 기반으로 메모리에 실제로 생성된 객체(Object)

2️⃣ 클래스 · 객체 · 인스턴스 관계

클래스 (설계도) ↓new 인스턴스 (메모리에 생성) = 객체
👉 인스턴스 = 객체 (실무/면접에서는 거의 같은 의미)

3️⃣ 예시

클래스
class Person { String name; int age; }
인스턴스 생성
Person p1 = new Person(); Person p2 = new Person();
구분
설명
Person
클래스
new Person()
인스턴스 생성
p1, p2
서로 다른 인스턴스

4️⃣ 인스턴스의 특징

  • 메모리에 실제로 존재
  • 클래스당 여러 개 생성 가능
  • 각 인스턴스는 독립된 상태를 가짐
p1.age =20; p2.age =30;

5️⃣ 객체 vs 인스턴스 차이 (면접용)

구분
객체
인스턴스
관점
개념적
메모리 관점
의미
클래스가 실체화된 것
메모리에 생성된 객체
실무
거의 동일하게 사용
생성 시점 강조
👉 “인스턴스”는 생성되었다는 점을 강조

6️⃣ 인스턴스와 메모리 구조

  • 힙(Heap)에 생성
  • 참조 변수는 스택(Stack)에 저장
Person p = new Person();
Stack : p Heap : Person 인스턴스
 

필기 정리

notion image
 
Share article