자바Java

객체란?

개린이9999 2025. 5. 20. 14:55
728x90

✅ 객체란? 한 줄 정의

객체 = 상태(값) + 행동(기능)을 가진 실체.

📦 즉, 어떤 정보를 담고 있고, 그걸 처리하는 동작(메서드)도 함께 가진 단위야.


☕ 비유: "로봇"

너가 '로봇'을 만든다고 생각해보자.

  • 로봇의 이름, 배터리잔량, ID번호 = 👉 상태 (필드/멤버 변수)
  • 로봇의 걷기(), 충전하기() = 👉 행동 (메서드)

💡 이걸 자바로 표현하면 객체가 돼.


✅ 예시 코드: 객체로 표현한 로봇

 
public class Robot { String name; int battery; public void walk() { battery -= 10; System.out.println(name + "이 걷는다. 남은 배터리: " + battery); } public void charge() { battery = 100; System.out.println(name + " 충전 완료!"); } }

 

 

Robot r1 = new Robot(); // 👉 객체 생성 r1.name = "뚜비"; r1.battery = 80; r1.walk(); // 👉 행동 실행 r1.charge(); // 👉 또 다른 행동
 
 

🔗 r1 이라는 변수에 저장된 게 바로 객체
→ 필드(name, battery)와 메서드(walk(), charge())를 모두 가지고 있는 실체


✅ 객체가 왜 필요한데?

  • 코드 재사용이 쉬움 (필요할 때마다 로봇 복사 가능)
  • 현실 세계 모델링에 적합 (사람, 주문서, 게시글 같은 걸 그대로 표현 가능)
  • 데이터랑 기능을 하나로 묶음 → 유지보수, 설계에 유리

✅ 객체 = 데이터 + 기능 묶음

구성 요소예시
상태 name, battery, age, id
행동 walk(), charge(), update()
 

🔄 객체와 직렬화(Serializable)는 어떤 관계?

객체는 메모리에만 존재해 → 꺼내거나 보내려면 ‘직렬화’가 필요해!

예를 들어, 세션에 사용자 정보를 저장하려면:

 

public class User implements Serializable { String name; int age; }

🔐 이걸 직렬화하면 → byte[] 로 바뀜 → 디스크, 네트워크, 세션 저장 가능
(마치 사람의 정보를 종이에 써서 포장해 택배로 보내는 느낌)


🧠 진짜 핵심 정리

개념설명비유
객체 값(상태)과 기능(행동)을 가진 실체 "로봇" (이름 + 걷기능력)
인스턴스 new로 만든 객체의 실체 뚜비, 나나 등
직렬화 객체를 바이트로 바꾸는 작업 사람 정보를 종이에 써서 택배 포장
 

✅ 네가 정말로 이해해야 할 핵심 포인트

  • 클래스는 설계도
  • **객체는 그걸 기반으로 만든 실체(인스턴스)**야
  • 객체는 상태와 동작을 모두 포함하는 데이터 단위야
  • 이걸 저장/전송하려면 직렬화(Serializable)가 필요해
728x90