[Java] 클래스가 뭔데? 객체지향 설계를 위한 첫걸음

Java는 객체지향 언어예요. 이 말은 곧 Java에서 작성하는 모든 코드의 중심에는 클래스(Class)라는 개념이 있다는 뜻이에요. Java로 어떤 프로그램을 만들든, 클래스를 빼놓고는 제대로 된 구조를 구성하기 어려워요. 클래스를 잘 이해하면 객체지향적인 사고가 자연스럽게 익혀지고, 더 구조적이며 유지보수가 쉬운 코드를 작성할 수 있게 돼요. 그만큼 클래스는 Java에서 매우 중요한 개념이에요.


1. 클래스(Class)란?

클래스는 객체(Object)를 만들기 위한 설계도예요.

현실 세계로 비유하면 클래스는 "붕어빵 틀" 같은 거예요. 객체는 그 틀로 만들어낸 "붕어빵"이고요.

public class Car {
    String model;
    int speed;

    void drive() {
        System.out.println(model + " is driving " + speed + " km/h");
    }
}

위 예제에서 Car는 클래스, model과 speed는 필드(속성), drive()는 메서드(기능)예요.

 

 

2. 객체 생성: 클래스를 실제로 쓰려면 어떻게 해야 할까요?

클래스는 단순히 설계도이기 때문에 실제로는 사용할 수 없어요. 객체를 만들어야 그 기능을 사용할 수 있어요.

Car myCar = new Car();
myCar.model = "Tesla Model 3";
myCar.speed = 120;
myCar.drive();

new 키워드

  • new Car()는 Car 클래스의 새로운 객체를 생성해 주는 코드예요.
  • 생성된 객체는 힙 메모리에 저장되고, myCar는 이를 가리키는 참조 변수죠.

인스턴스(Instance)

  • 이렇게 생성된 객체는 인스턴스라고 불러요. 인스턴스는 객체와 같은 의미로 사용되지만, 특정 클래스에서 생성된 객체를 명확하게 지칭할 때 사용돼요.

 

 

3. 생성자(Constructor): 객체 생성 시 초기화 정의

생성자는 클래스로부터 객체가 생성될 때 자동으로 호출되는 특수한 메서드예요. 객체가 생성될 때 필드를 초기화하거나, 준비 작업을 하고 싶을 때 사용해요.

 

생성자의 특징

  • 이름이 클래스와 같아야 해요. 메서드처럼 void나 int 같은 반환 타입을 사용하지 않아요.
  • 객체가 생성될 때 자동으로 실행돼요. new 키워드와 함께 호출돼요.
public class Car {
    String model;
    int speed;

    // 생성자
    public Car(String model, int speed) {
        this.model = model;
        this.speed = speed;
    }
}
Car myCar = new Car("Genesis", 30);  // 생성자 호출

기본 생성자

생성자를 따로 정의하지 않으면 자바는 매개변수가 없는 기본 생성자(default constructor)를 자동으로 만들어줘요.

public class Car {
    String model;
    int speed;
    
    // 자동으로 아래와 같은 기본 생성자가 만들어져요.
    // public Car() { }
}
⚠️ 하나라도 생성자를 직접 정의하면, 기본 생성자는 자동으로 만들어지지 않으니 주의해야 해요!

 

 

4. 변수(Variable): 객체가 기억하는 데이터

class Car {
    static int totalCarsCount = 0; // 클래스 변수
	
    // 인스터스 변수
    String model;
    int speed;

    void drive() {
        int sound;  // 지역 변수
    }
}

자바에서 변수는 크게 세 가지로 나눌 수 있어요

  • 인스턴스 변수 (Instance Variable)
    객체가 생성될 때 함께 생성되는 변수로 객체마다 다른 값을 가질 수 있어요. 클래스 내부, 메서드 바깥에서 선언돼요
  • 클래스 변수 (Static Variable)
    static 키워드를 사용해서 선언해요. 모든 객체가 하나의 값을 공유해요. 클래스가 메모리에 로딩될 때 딱 한 번 생성돼요.
  • 지역 변수 (Local Variable)
    메서드 안에서 선언된 변수로 메서드가 실행될 때 생성되고, 끝나면 사라져요.

 

 

5. 메서드(Method): 객체의 행동을 정의해요

메서드는 객체가 수행할 수 있는 동작을 정의해요. 쉽게 말해 객체의 기능이에요. 

public class Calculator {
    int add(int a, int b) {
        return a + b;
    }
}
Calculator cal = new Calculator();
System.out.println(cal.add(1, 2));  // 3 출력

이에 대한 자세한 설명은 이전 포스팅인 '[Java] 메서드 완벽 가이드: 선언·호출·반환부터 설계 원칙까지'를 확인하시면 됩니다.