
☕ 클래스, 객체, 인스턴스 자바로 이해하기
붕어빵 비유는 그대로 유지하면서, 자바 문법으로 어떻게 구현되는지 살펴보겠습니다.
1. 🌟 Pokemon 클래스 (붕어빵 틀) 만들기
자바에서 클래스는 데이터(속성)와 메서드(기능)의 묶음입니다. 이 클래스가 바로 객체를 찍어내는 설계도인 '붕어빵 틀'의 역할을 합니다.
Java
// 1. 🌟 Pokemon (포켓몬) 클래스 만들기
// 이것이 바로 '붕어빵 틀' 입니다.
class Pokemon {
// 📝 속성 (특징) - 모든 포켓몬이 가질 기본 특징을 정의합니다.
String name; // 이름
String type; // 타입 (전기, 물, 불 등)
int hp; // 체력
// 🔨 생성자 (Constructor) - 객체를 만들 때(new) 속성 값을 초기화하는 기능입니다.
// 파이썬의 __init__과 같은 역할을 합니다.
public Pokemon(String name, String type, int hp) {
this.name = name; // this.name은 클래스의 속성, name은 매개변수
this.type = type;
this.hp = hp;
}
// 🔨 기능 (할 수 있는 행동) - '메서드(Method)'라고 부릅니다.
public void useSkill() {
System.out.println("[" + this.name + "]이(가) 스킬을 사용합니다!");
}
public void showStatus() {
System.out.println("--- " + this.name + " 상태 ---");
System.out.println("타입: " + this.type);
System.out.println("체력: " + this.hp);
System.out.println("--------------------");
}
}
- 속성 (Attribute): String name, int hp 등은 클래스가 가진 변수로, 객체마다 다른 값을 가질 수 있습니다.
- 생성자 (Constructor): public Pokemon(...)는 클래스 이름과 같은 특별한 메서드입니다. new 키워드를 사용하여 객체(인스턴스)를 생성할 때 반드시 호출되며, 속성을 초기화하는 역할을 합니다.
- 메서드 (Method): public void useSkill() 등은 객체가 수행할 수 있는 동작을 정의합니다.
2. ⚡️ 객체 (인스턴스) 만들기 및 기능 사용하기
new 키워드를 사용하여 Pokemon 클래스라는 틀에서 **실제 객체(인스턴스)**인 피카츄와 꼬부기를 찍어냅니다.
Java
// 2. ⚡️ 객체 (인스턴스) 만들기 및 기능 사용해 보기
public class Main {
public static void main(String[] args) {
// '피카츄' 라는 객체(인스턴스) 만들기
// new Pokemon(...)은 생성자를 호출하며 메모리에 실제 객체를 만듭니다.
Pokemon pikachu = new Pokemon("피카츄", "전기", 35);
// '꼬부기' 라는 객체(인스턴스) 만들기
Pokemon squirtle = new Pokemon("꼬부기", "물", 44);
System.out.println("--- ⚡️ 피카츄 행동 ---");
pikachu.showStatus(); // 피카츄 객체의 기능 사용
pikachu.useSkill(); // 피카츄 객체의 기능 사용
System.out.println("\n");
System.out.println("--- 💧 꼬부기 행동 ---");
squirtle.showStatus(); // 꼬부기 객체의 기능 사용
squirtle.useSkill(); // 꼬부기 객체의 기능 사용
System.out.println("\n");
// 4. 🧩 같은 클래스(틀)에서 나왔지만 서로 다른 값 (속성)을 가질 수 있어요.
System.out.println("피카츄의 타입: " + pikachu.type);
System.out.println("꼬부기의 타입: " + squirtle.type);
}
}
코드 실행 결과 (예상)
--- ⚡️ 피카츄 행동 ---
--- 피카츄 상태 ---
타입: 전기
체력: 35
--------------------
[피카츄]이(가) 스킬을 사용합니다!
--- 💧 꼬부기 행동 ---
--- 꼬부기 상태 ---
타입: 물
체력: 44
--------------------
[꼬부기]이(가) 스킬을 사용합니다!
피카츄의 타입: 전기
꼬부기의 타입: 물
🖼️ 자바에서의 개념 정리
| 개념 | 붕어빵 비유 | 자바 (Java)에서의 역할 |
| 클래스 (Class) | 붕어빵 틀 | 객체를 만들기 위한 설계도. 속성(변수)과 기능(메서드)을 정의. |
| 객체 (Object) | 실제 붕어빵 | 클래스를 기반으로 new 키워드를 통해 메모리에 생성된 실체. |
| 인스턴스 (Instance) | 팥 붕어빵, 슈크림 붕어빵 | **"특정 클래스(Pokemon)를 기반으로 만들어진 객체"**를 강조할 때 사용. pikachu는 Pokemon 클래스의 인스턴스. |
이처럼 자바에서 클래스는 틀이고, 객체는 그 틀로 만들어진 실체이며, 인스턴스는 그 객체가 특정 클래스에 속한다는 관계를 강조할 때 사용되는 용어라고 이해하시면 됩니다.
'Java_language' 카테고리의 다른 글
| 클래스의 객체 생성 및 사용 (0) | 2025.11.26 |
|---|---|
| 클래스 메서드, 생성자 쉽게 이해하기 (0) | 2025.11.26 |
| 클래스란 무엇일까요? (0) | 2025.11.26 |
| 정렬, 버블정렬 알고리즘 Bubble Sort (0) | 2025.11.24 |
| 최대값 (Maximum) 반환 메서드 (0) | 2025.11.24 |