자바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