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

 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 모두 선언해주셔야 합니다.

코틀린의 변수 선언 기본형태

var/val 변수명: 변수타입 = 초기화

ex) var name: String = "name"


Java와 비교해보면

변수타입 변수명 = 초기화;

ex) String name = "name";


Java나 기타 다른 프로그래밍 언어를 접해봤다면 변수 선언 문법만 생소할 뿐 변수타입은 기존 언어와 별반 차이가 없어서 쉽게 사용할 수 있습니다.


var / val 키워드

생소한 부분 역시 아래 var/val 키워드 일 것입니다.

var = variable = 읽기/쓰기가 가능한 일반 변수

val = valuable = 읽기만 가능한 final 변수 

이 역시 Java의 final 변수에 대한 개념을 알면 금방 이해할 수 있습니다.


Non-Null / Nullable

특이한점은 코틀린에서는 Non-null 타입Nullable 타입이 존재합니다.

null을 값으로 가질 수 있으면 Nullable, 그렇지 않으면 Non-null 타입입니다.

var name: String = null // 에러 

얼핏 보면 이상할 것이 없는 위 코드는 에러가 발생합니다.

그 이유는 해당 String 변수는 Non-null 타입이기 때문입니다.


Nullable로 선언하는 방법

 var name: String? = null

Nullable String 변수를 선언하려면 위와 같이 ? 를 꼭 붙여야 합니다.



변수 출력하는 방법

코틀린

 println("텍스트 $변수")


Java

 System.out.println("텍스트 " + 변수);

$를 출력하고 싶으면 $$로 하면 되겠죠?


이제 변수 선언하는 방법을 알기 때문에 변수 타입을 Int, Long 등으로 변형해서 다양하게 사용할 수 있습니다.

 class ExampleUnitTest {

@Test
fun kotlin() {
var language: String = "Kotlin" // Java => String language = "Kotlin";
var version = "1.1.51" // 자동 유추 : String
var chapter = 1 // 자동 유추 : Int

// var empty: String = null // Non-null 타입은 null을 값으로 가질 수 없음
var empty: String? = null // null 타입으로 선언하기 위한 키워드로 물음표 사용
empty = "ABC"
empty.length // 가능
empty?.length // 안전

var empty2: String? = null // null 타입으로 선언하기 위한 키워드로 물음표 사용
empty2?.length // null check

var empty3: String? = "ABC" // null 타입으로 선언하기 위한 키워드로 물음표 사용
empty3?.length // null check

val ch10 = 10 // Java => final int ch10 = 10;
val WIFI_STATE: String = "WIFI_STATE" // final String WIFI_STATE = "WIFI_STATE";

println("language $language") // System.out.println("language " + language);
println("version $version")
}


+ Recent posts