본문 바로가기
JAVA & Spring

[Java] 클래스(Class)란? 아주 쉽게 그림으로 정리(+코드)

by 알기 쉬운 코딩 사전 2024. 10. 16.
반응형

이 글은 객체(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 연산자를 사용하여 추가로 인스턴스를 선언해야 하지만,

우리는 붕어빵을 어떻게 만들지 고민할 필요가 사라졌습니다.
어떤 재료와 어떤 소스를 넣을지만 고민하면 됩니다.
참고: 배열을 통하여 해당 소스 코드를 최적화할 수 있습니다.
반응형

댓글