8️⃣ 클래스와 객체 – 코드로 생명체를 만들자! 🧬🚀

🎬 상상해봐

너는 RPG 게임을 만들고 있어.
이 게임에 "용사 캐릭터"를 만들고 싶어.

용사에게는 어떤 정보가 있을까?

  • 이름
  • 레벨
  • 체력
  • 공격하기

근데 그걸 변수로만 관리한다면?

String name = "철수";
int level = 5;
int hp = 100;

이거... 캐릭터가 100명 생기면? 👀 지옥이 펼쳐진다.

그래서 등장한 게 바로 클래스(class)!
클래스는 설계도, 객체는 실제 제품!


🏗️ 1. 클래스 만들기

public class Hero {
String name;
	int level;
	int hp;

	void attack() {
		System.out.println(name + "이(가) 공격했다!");
	}
}
  • String name : 이름
  • int level, int hp : 정보(속성)
  • attack() : 행동(기능)

🎯 이건 '용사(Hero)'를 만드는 설계도야!


🧞 2. 객체 만들기

public class Main {

	public static void main(String[] args) {
		Hero hero1 = new Hero(); // 객체 생성!
		hero1.name = "철수";
		hero1.level = 10;
		hero1.hp = 150;
        
		hero1.attack(); // 철수가 공격했다!
	}
}

new Hero() → 진짜 용사 한 명 탄생!
hero1은 이제 살아 있는 하나의 객체야!


💡 여러 객체 만들기

Hero hero2 = new Hero();
hero2.name = "영희";
hero2.level = 8;
hero2.hp = 120;

hero2.attack(); // 영희가 공격했다!
  • 같은 설계도(Hero)로 다양한 캐릭터를 만들 수 있어!
  • 마치 붕어빵 틀 하나로 수백 개 찍는 느낌!

🧙‍♂️ 3. 객체지향이란?

Object-Oriented Programming (OOP) = 객체를 중심으로 세상을 바라보는 방식

사람, 괴물, 자동차, 은행 계좌 전부 객체
각각 속성과 행동을 가짐 (ex. 자동차: 속도, 주행 / 사람: 이름, 말하기)


🧩 클래스 구조 요약

public class 클래스이름 {

	// 속성 (멤버 변수) 자료형 변수명;
    
	// 기능 (메서드) 반환형 메서드이름() {
		// 동작
	}
}

🧠 정리표

용어의미비유
클래스 설계도 붕어빵 틀
객체 실제 제품 붕어빵
속성 정보 이름, 나이, 체력
메서드 행동 공격, 점프, 대화

🎮 실전 미션 – 자동차 만들기

public class Car {

	String model;
	int speed;
    
	void drive() {
		System.out.println(model + "가 " + speed + "km/h로 달립니다!");
	}
}
public class Main {

    public static void main(String[] args) {
        Car myCar = new Car();
        myCar.model = "람보르기니";
        myCar.speed = 250;
        
        myCar.drive(); // 람보르기니가 250km/h로 달립니다!
    }
}

🌟 마무리 요약

지금 너는 설계도를 짜고, 실제 객체를 탄생시키는 기술자가 된 거야.
클래스는 세상을 표현하는 기본 단위야.
이제부턴 어떤 개념이든 직접 만들어서 구현할 수 있어.


다음 9단원에서는 **생성과정에 마법을 더해줄 Constructor(생성자)**를 배워보자!
객체가 태어나는 순간, 자동으로 정보를 입력할 수 있게 되는 자동화 주문이야.
이제 객체 탄생도 우아하게 만들 수 있어.