코틀린 기본 4

[코틀린] companion object이란?

오늘은 companion object에 대해 알아볼 예정이다. 역시나 Java 로 코드를 살펴보고 Kotlin으로 바꿔보도록 하자 Java에서의 상수 public class Person { public static final int MAX_AGE = 500; } public static void main() { System.out.println(Person.MAX_AGE); } 간단한 코드이다. Person 클래스 내부에 MAX_AGE 라는 상수가 public 접근 제한자로 존재하고, 이는 외부에서 Person.MAX_AGE로 접근할 수 있다. 만약 Person 클래스 내부에서만 접근하게 하고 싶다면 public을 private으로 바꿀 수 있다. 클래스와 인스턴스 관점에서 바라보자면, static 필드..

[코틀린] data class란?

Kotlin data class에 대해서 알아보려고 한다. Java의 data class Car 이라는 객체를 예시로 Step By Step 접근을 해보자 Plain Java Object로 Car를 작성하면 다음과 같다. public class Car { private String name; private int price; } 여기서 Car 인스턴스 필드에 접근하기 위한 getter / setter 를 추가하면 아래와 같다. public class Car { private String name; private int price; public String getName() { return name; } public int price() { return price; } public void setName(..

[코틀린] ?. 연산자, ?: 연산자

코틀린에는 ?. 연산자가 존재한다. 일반적으로 객체지향적인 언어에서 . 연산자는 객체 인스턴스의 필드나 메소드에 접근하는 역할을 수행한다. 코틀린에서는 객체가 null 일 수도 있는 경우를 코드 상 명확히 하기 위해 . 대신 ?. 를 사용해야 한다. Java와 Kotlin으로 몇 가지 예시를 살펴보자 Java 에서의 . 연산자 다음과 같은 코드가 있다고 해보자. public void main() { System.out.println(getCarOrNull().getName()); } public Car getCarOrNull() { if (...) { return null; } return new Car(); } getCarOrNull 코드를 호출하면 조건에 따라 null이 올 수도 Car 인스턴스가 반..

[코틀린] val과 var 차이

Java에서는 새로운 변수를 만들 때 int number = 3; 처럼 [타입] [변수이름] = [할당될 값 또는 인스턴스]가 문법이었다. 하지만 Kotlin에서는 val number1 = 3 var number2 = 3 처럼 Java 문법상 [타입] 자리에 val 또는 var이 들어가게 된다. 둘의 차이는 간단하다. val : 한 번 선언하면 값이 바뀌지 않는다 (JS의 const) var : 한 번 선언한 이후 값을 바꿀 수 있다 (JS의 let) 예를 들어 number1과 number2를 수정했을때 아래와 같이 되는 것이다. number1 = 4 // 에러 number2 = 4 // 통과 Kotlin은 타입을 가고 있어 number1, numbere2에 대한 타입을 자동으로 추론한다 (즉 Int 타..