코틀린의 클래스 선언 기본형태

 class 클래스명 constructor(변수) { }

또는 

 class 클래스명(변수) { }


Java와 비교해보면

 class 클래스명 {

   클래스명(변수) {

   }

}


다중 생성자

Java

 class Constants {

   private String name;

   private int age;

   Constants(String name) {

    this.name = name;

   }

   Constants(String name, int age) {

    this.name = name;

    this.age = age;

   }

}

 (Java에서 위와 같이 생성자를 선언하면 기본 생성자가 자동으로 생성되지 않기 때문에 명시적으로 선언하는 것이 좋습니다.)


코틀린

// primary constructor는 constructor 생략 가능

class Constants constructor(val name: String, val age: Int) {

    // secondary constructor는 constructor 생략 불가능

    constructor(name: String) : this(name, 0)

}


코틀린의 default 생성자

class ExampleUnitTest {

    @Test

    fun kotlin() {

        Person(age = 25)

    }


    class Person(var name: String = "Jane", var age: Int)


 위 코드를 보면 생성자에서 name을 Jane으로 지정했습니다. 이때 Person 클래스 생성시 age의 값만 명시하여도 name이 Jane으로 초기화 됩니다. 물론 age는 25로 초기화 됩니다.

 Java에서의 기본 생성자 형태인 Person() { }와 다른 개념입니다. Java에서 해당 Person 클래스를 사용하려면 name과 age 모두 선언해주셔야 합니다.

+ Recent posts