본문 바로가기
JAVA

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

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

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

 

참고로 배열의 도입을 통하여 해당 소스 코드를 최적화할 수 있다.

반응형

댓글