반응형
이 글은 객체(Object)와 인스턴스(Instance)가 무엇인지에 대해 설명하지 않습니다.
객체(Object)와 인스턴스(Instance)에 대해서는 아래에 설명해두었습니다.
📄 클래스 (Class)란?
- 클래스는 객체를 생성하기 위한 '틀' 또는 설계도입니다.
- 클래스는 객체가 가져야 할 속성(변수)과 기능(메서드)를 정의합니다.
- 예를 들어 붕어빵이라는 클래스는 속성으로 재료, 소스를 가집니다.
❓ 붕어빵 틀과 붕어빵의 관계
붕어빵 틀은 붕어빵이 아닙니다!
이렇게 생긴 붕어빵이 나왔으면 좋겠다고 만드는 틀일 뿐입니다.
실제 먹을 수 있는 것이 아닙니다.
실제 먹을 수 있는 팥 붕어빵을 객체 또는 인스턴스라 합니다.
❓ 자동차 설계도와 자동차
자동차 설계도는 자동차가 아닙니다!
설계도는 실제 존재하는 것이 아니라 개념으로만 있는 것입니다.
설계도를 통해 생상한 실제 존재하는 검은색 K5 모델 자동차를 객체 또는 인스턴스라 합니다.
🖥️ Java 소스 코드로 이해하기
붕어빵 2개를 만드는 아래 코드를 참고해 주세요.
참고로 쉬운 이해를 돕기 위해 변수명은 한글로 작성하였습니다.
클래스 도입 전
ClassStart.java
public class ClassStart {
public static void main(String[] args) {
String 붕어빵1재료 = "밀가루";
String 붕어빵1소스 = "팥";
String 붕어빵2재료 = "찹쌀";
String 붕어빵2소스 = "슈크림";
System.out.println("재료:" + 붕어빵1재료 + " 소스:" + 붕어빵1소스);
System.out.println("재료:" + 붕어빵2재료 + " 소스:" + 붕어빵2소스);
}
}
이 코드의 문제점은 붕어빵의 종류가 늘어날 때 마다 변수를 추가로 선언해야하고,
또 출력하는 코드도 추가해야 합니다.
해당 문제를 해결하기 위해서는 클래스(붕어빵 틀)을 도입해야 합니다.
✅ 클래스 도입
아래 코드는 붕어빵 틀을 클래스(Class)로 나타낸 코드입니다.
Bungeobbang.java
public class Bungeobbang {
String 재료;
String 소스;
}
클래스를 통해 앞으로 붕어빵의 속성(재료, 소스)은 작성하지 않게 되었습니다.
클래스를 통해 붕어빵 2개를 만드는 아래 코드를 참고해 주세요.
ClassStart1.java
public class ClassStart1 {
public static void main(String[] args) {
Bungeobbang 붕어빵1 = new Bungeobbang();
붕어빵1.재료 = "밀가루";
붕어빵1.소스 = "팥";
Bungeobbang 붕어빵2 = new Bungeobbang();
붕어빵2.재료 = "찹쌀";
붕어빵2.소스 = "슈크림";
System.out.println("재료:" + 붕어빵1.재료 + " 소스:" + 붕어빵1.소스);
System.out.println("재료:" + 붕어빵2.재료 + " 소스:" + 붕어빵2.소스);
}
}
붕어빵의 종류가 늘어날 때마다 new 연산자를 사용하여 추가로 인스턴스를 선언해야 하지만,
우리는 붕어빵을 어떻게 만들지 고민할 필요가 사라졌습니다.
어떤 재료와 어떤 소스를 넣을지만 고민하면 됩니다.
참고: 배열을 통하여 해당 소스 코드를 최적화할 수 있습니다.
반응형
'JAVA & Spring' 카테고리의 다른 글
[Java] 인수(Argument)란? 매개변수(Parameter)란? 아주 쉽게 정리(+코드) (0) | 2024.10.23 |
---|---|
[Java] 객체(Object)란? 인스턴스(Instance)란? 아주 쉽게 정리(+코드) (0) | 2024.10.16 |
[ Spring ] @Autowired, @Resource, @Inject 차이점 아주 쉽게 정리 (1) | 2024.10.16 |
[Spring Boot] Thymeleaf decoupled logic Config 등록 방법 (0) | 2024.04.01 |
[Spring] Log 출력 및 총 정리 (0) | 2024.01.18 |
댓글