minstudio

클래스와 인스턴스 (객체지향의 시작)

자바는 객체지향(Object-Oriented) 언어입니다. 객체지향 프로그래밍은 상태(변수)와 행동(메서드)을 하나의 덩어리로 묶어서 관리하는 패러다임입니다.

클래스(Class)는 객체를 만들기 위한 '설계도' 또는 '붕어빵 틀'입니다. 이 틀을 이용해 메모리(Heap)에 실제로 찍어낸 실체를 인스턴스(Instance) 혹은 '객체'라고 부릅니다. 붕어빵 틀은 하나지만, 팥 붕어빵, 슈크림 붕어빵처럼 서로 다른 상태를 가진 여러 인스턴스를 무한히 만들어낼 수 있습니다.

🏭 클래스와 인스턴스 (붕어빵 틀 비유) class 붕어빵 (설계도) 상태: String 앙금 행동: 굽기() new 연산자 인스턴스 1 (메모리) 앙금 = "팥" 인스턴스 2 (메모리) 앙금 = "슈크림"
// 붕어빵 틀(클래스) 정의
class FishBread {
    // 필드 (상태)
    // private: 외부에서 마음대로 앙금을 바꾸지 못하게 캡슐화(보호)합니다.
    private String filling; 

    // 생성자 (인스턴스가 생성될 때 호출되는 초기화 메서드)
    public FishBread(String filling) {
        this.filling = filling;
    }

    // 메서드 (행동)
    public void bake() {
        System.out.println(this.filling + " 붕어빵이 따끈하게 구워졌습니다!");
    }
}

public class Main {
    public static void main(String[] args) {
        // new 키워드를 사용하여 메모리에 실제 인스턴스(객체)를 찍어냅니다.
        FishBread redBeanBread = new FishBread("팥");
        FishBread creamBread = new FishBread("슈크림");

        // 각각의 인스턴스는 자신만의 독립적인 상태를 가지고 행동합니다.
        redBeanBread.bake(); // 출력: 팥 붕어빵이 따끈하게 구워졌습니다!
        creamBread.bake();   // 출력: 슈크림 붕어빵이 따끈하게 구워졌습니다!
    }
}
클래스와 인스턴스 (객체지향의 시작) | Minstudio