본문 바로가기
JAVA & Spring

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

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

📄 클래스 (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 연산자를 사용하여 추가로 인스턴스를 선언해야 하지만,

우리는 붕어빵을 어떻게 만들지 고민할 필요가 사라졌다.

어떤 재료와 어떤 소스를 넣을지만 고민하면 된다.

참고: 배열을 통하여 해당 소스 코드를 최적화할 수 있다.
반응형

댓글