클래스와 인스턴스 (객체지향의 시작)
자바는 객체지향(Object-Oriented) 언어입니다. 객체지향 프로그래밍은 상태(변수)와 행동(메서드)을 하나의 덩어리로 묶어서 관리하는 패러다임입니다.
클래스(Class)는 객체를 만들기 위한 '설계도' 또는 '붕어빵 틀'입니다. 이 틀을 이용해 메모리(Heap)에 실제로 찍어낸 실체를 인스턴스(Instance) 혹은 '객체'라고 부릅니다. 붕어빵 틀은 하나지만, 팥 붕어빵, 슈크림 붕어빵처럼 서로 다른 상태를 가진 여러 인스턴스를 무한히 만들어낼 수 있습니다.
// 붕어빵 틀(클래스) 정의
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(); // 출력: 슈크림 붕어빵이 따끈하게 구워졌습니다!
}
}