Java에서 Kotlin으로: 이 클래스를 어떻게 다시 작성하시겠습니까?

발행: (2026년 2월 27일 오후 10:14 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

이 클래스가 하는 일 이해하기

Kotlin으로 넘어가기 전에, 이 Java 클래스가 실제로 무엇을 포함하고 있는지 살펴보겠습니다:

  • 생성자를 통해 설정되는 두 개의 private 필드(codigonome)
  • 기본값을 가진 두 개의 private 필드(numero = 0texto = "EscolaX")

codigonome을 매개변수로 받는 생성자this를 사용해 값을 할당합니다.


1단계: 클래스 선언

Java

public class AlunoJava { ... }

Kotlin

클래스는 기본적으로 public이므로 public 키워드를 사용할 필요가 없습니다:

class AlunoKotlin { ... }

public이 필요 없습니다 — 처음부터 보일러플레이트가 줄어듭니다.


2단계: 생성자

Java 생성자

public AlunoJava(String codigo, String nome) {
    this.codigo = codigo;
    this.nome = nome;
}

Kotlin 기본 생성자(클래스 헤더에 선언). val이나 var를 추가하면 필드가 자동으로 생성됩니다:

class AlunoKotlin(private val nome: String, private val codigo: String) {
    // nome과 codigo가 여기서 이미 선언·할당되었습니다!
}

✅ 생성자 선언, 필드 선언, 할당이 한 줄에 모두 이루어집니다.


3단계: val vs var

  • val불변(Java의 final과 유사) — 초기화 후 값을 재할당할 수 없습니다.
  • var가변 — 나중에 값을 변경할 수 있습니다.

원래 Java 클래스가 codigonome을 생성 후 재할당하지 않으므로, val이 더 충실하고 관용적인 번역입니다.


4단계: 기본값을 가진 필드

Java 필드

private int numero = 0;
private String texto = "EscolaX";

Kotlin 대응(타입 추론 적용):

private var numero = 0          // Int로 추론
private var texto = "EscolaX"   // String으로 추론

✅ 여기서는 var를 사용합니다. 해당 필드들은 나중에 변경될 수 있기 때문이며(Java에서 final이 아니었습니다).


최종 결과

모두 합치면 다음과 같습니다:

class AlunoKotlin(private val nome: String, private val codigo: String) {
    private var numero = 0
    private var texto = "EscolaX"
}

나란히 비교

Java (17줄)

public class AlunoJava {
    private String codigo;
    private String nome;
    private int numero = 0;
    private String texto = "EscolaX";

    public AlunoJava(String codigo, String nome) {
        this.codigo = codigo;
        this.nome = nome;
    }
}

Kotlin (3줄)

class AlunoKotlin(private val nome: String, private val codigo: String) {
    private var numero = 0
    private var texto = "EscolaX"
}

동일한 동작. 코드 양은 훨씬 적습니다. 🎯


핵심 정리

Java 개념Kotlin 대응
public classclass (기본적으로 public)
별도 생성자 블록클래스 헤더에 있는 기본 생성자
this.x = x 할당생성자 매개변수에 val/var 사용
private String xprivate val x: String
이름 앞에 타입 (String x)이름 뒤에 타입 (x: String)
final 필드val
가변 필드var

결론

Kotlin은 Java의 보일러플레이트를 없애면서도 명확성을 유지하도록 설계되었습니다. 기본 생성자 문법과 val/var 구분에 익숙해지면, 대부분의 간단한 Java 클래스는 자연스럽게 Kotlin으로 변환될 수 있으며 코드 길이도 크게 줄어듭니다.

0 조회
Back to Blog

관련 글

더 보기 »