Develop/Java

[Java] Class와 Record : 정의, 특징, 그리고 차이점 이해하기

DevPi 2024. 8. 9. 14:07
반응형

자바는 객체 지향 프로그래밍 언어로서, 데이터와 행위를 캡슐화하는 클래스라는 구조를 사용해왔습니다. 최근 자바 14에서 도입된 레코드(record)는 자바 16부터 정식 기능으로 포함되어, 특히 데이터 전송과 같은 상황에서 더 간결하고 효율적인 프로그래밍을 가능하게 해줍니다. 본 글에서는 자바의 클래스와 레코드에 대해 자세히 알아보고, 각각의 정의와 특징 그리고 어떻게 사용되는지를 비교해 보겠습니다.


클래스(Class)란?

자바에서 클래스는 객체의 청사진으로 사용됩니다. 클래스를 통해 객체의 상태를 정의하는 필드(변수)와 객체의 행동을 정의하는 메소드(함수)를 하나의 단위로 묶을 수 있습니다.

 

클래스의 주요 특징

  • 상태와 행동의 캡슐화 : 클래스는 데이터와 데이터를 조작하는 메소드를 함께 묶어 관리합니다.
  • 재사용성 : 클래스는 상속을 통해 기능을 확장하고, 인터페이스를 통해 다형성을 구현할 수 있습니다.
  • 정보 은닉 : 클래스는 접근 제어자를 통해 내부 데이터를 보호하고 외부에서 접근을 제한할 수 있습니다.

클래스 사용 예

public class Car {
    private String model;
    private int year;

    public Car(String model, int year) {
        this.model = model;
        this.year = year;
    }

    public void displayInfo() {
        System.out.println("Model: " + model + ", Year: " + year);
    }
}

레코드(Record)란?

자바 14에서 처음 도입된 레코드는 간단한 데이터 운반용 객체를 목적으로 설계된 구문 구조입니다. 레코드는 불변의 데이터를 저장하는 데 사용되며, 클래스보다 선언이 간결합니다.

 

레코드의 주요 특징

  • 불변성 : 레코드의 모든 필드는 final로 선언되어, 생성 후 변경할 수 없습니다.
  • 데이터 중심 : 레코드는 데이터를 저장하고 접근하는 메소드(equals(), hashCode(), toString())를 자동으로 제공합니다.
  • 간결성 : 필드 정의, 생성자, 표준 메소드 등이 자동으로 생성되어 코드를 간결하게 유지할 수 있습니다.

레코드 사용 예

public record Student(String name, int age) { }

클래스와 레코드의 차이점

  • 설계 목적 : 클래스는 상태와 행동을 캡슐화하는 데 중점을 두고, 재사용성과 확장성을 고려하여 설계되었습니다. 반면, 레코드는 데이터를 단순하고 안전하게 전달하기 위한 구조로 설계되었습니다.
  • 불변성 : 클래스는 필드의 가변성을 허용하지만, 레코드는 모든 필드가 불변입니다.
  • 메소드 지원 : 클래스는 사용자가 메소드를 자유롭게 추가할 수 있습니다. 레코드는 데이터 접근과 관련된 메소드를 자동으로 제공하지만, 복잡한 행동을 추가하기 위한 메소드는 제한적입니다.

결론

클래스와 레코드는 자바 프로그래밍에서 중요한 역할을 하며, 각각의 사용 사례와 요구 사항에 따라 선택할 수 있습니다. 레코드는 불변의 데이터 객체를 간결하게 표현할 때 유용하며, 클래스는 보다 복잡한 비즈니스 로직을 구현하는 데 적합합니다. 이 두 구조를 올바르게 이해하고 적절히 활용한다면, 보다 효과적이고 효율적인 자바 애플리케이션을 개발할 수 있을 것입니다.

반응형