코틀린에서 변수앞에 :: (더블 콜론)을 명시하면 변수를 객체로 액세스 하여 객체에 대한 속성을 참조 할수 있습니다. val x = 1 fun main(args: Array) { println(::x.get()) println(::x.name) } // 실행 결과 // 1 // x 코틀린은 기본적으로 Non-null 타입을 가집니다. 그러므로 항상 값을 초기화를 시켜주거나 null 값을 가질 수 있게 따로 처리해야합니다. (이전 글 참고) lateinit 키워드는 초기화를 나중에 할 수 있게 미루는 키워드입니다. val은 final 특징을 가지기 때문에 값 수정을 할수 없으므로 lateinit 키워드랑 같이 사용할 수 없습니다. primitive type(원시 타입)에서는 사용이 불가능합니다. ex) D..
자바에서 final? final로 선언된 변수는 값을 초기화만 가능, 변경 불가 static? static이 선언된 변수는 클래스의 모든 객체가 공유 가능, 클래스 변수라고도 합니다. new로 클래스 객체생성 없이 호출가능 (호출방법 = '클래스 이름' . '변수') final static double PI = 3.14; 코틀린에서 const val PI: Double= 3.14 코틀린에서 요구 사항 최상위 또는 member of an object 선언 또는 Companion Objects 형태의 값 String또는 원시적 형으로 초기화된다. getter 없음 위 코드를 이해하기 위해서는 아래 코틀린 문법이 필수입니다. 2019/05/19 - [Kotlin] - 코틀린 기초 문법) 1. 코틀린 변수 정의하기
오버로딩(Overloading)? 메서드(함수) 이름을 고정으로 하고 매개변수 만 다르게 함으로써 메서드를 여러개 만드는 것 자바에서 오버로딩 public class OverloadingClass { void ex(){} void ex(int x){} void ex(int x, int y){} void ex(int x, int y, int z){} void ex(String str){} void ex(String str, int x){} /* *. *.. *... *.... *..... */ } 코틀린에서 오버로딩 class OverloadingClass() { fun ex() {} fun ex(x: Int, y: Int) {} fun ex(x: Int, y: Int, z: Int) {} fun ex(s..
상속이란 부모의 자원을 자식이 상속받아 사용하는 것 자바에서 상속 방법 class ChildClass extends + '부모 클래스' class ParentClass {} class ChildClass extends ParentClass {} 코틀린에서 상속 방법 class ChildClass : '부모 클래스' 여기서 자바와 다르게 코틀린은 부모 클래스 앞에 open 키워드를 사용합니다. open class ParentClass {} class ChildClass : ParentClass() {} 만약 open이라는 키워드를 사용하지 않고 코드를 작성할 경우 This type is final, so it cannot be inherited from 이라는 에러 문구가 나옵니다. 코틀린은 open 키워..
코틀린은 자바와 똑같이 클래스는 class 키워드를 사용합니다. 자바에서의 클래스와 생성자 및 초기 코드 작성 방법 class ClassName { ClassName() { System.out.println("Constructors"); } ClassName(String str) {} ClassName(String str, int i) {} } 코틀린에서의 클래스와 생성자 및 초기 코드 작성 방법 /* constructor 키워드 생략가능 코틀린의 클래스는 기본생성자와 하나 이상의 보조 생성자를 가질수 있습니다. */ class ClassNameA1 {} class ClassNameA2 constructor() {} // 생성자에 매개변수가 있는 형태 class ClassNameB1(str: String..
DTO ( POJO/ POCO) 생성 및 사용 방법 자바 문법 class DtoStudent { private String name; public void setName(String name){ this.name = name; } public String getName(){ return this.name;} } 코틀린 문법 data class DtoStudent(var name: String) 자바에서는 getter/setter을 만들어 줘야합니다. 코틀린에서는 데이터 클래스(data class)를 이용 데이터 전송 개체인 DTO를 만듭니다. 데이터 클래스(data class) 사용 시 아래 기능을 따로 구현하지 않아도 사용가능합니다. getters (and setters in case of vars) ..
자바에서는 if( 0< x && x < 11) 코틀린에서는 if( 0< x && x < 11) or if (x in 1..10) x가 1 ~ 10에 포함되는지 확인하는 조건 문입니다. fun main(args: Array) { println(rangCheck(10)) println(rangCheck2(11)) } //범위 확인 fun rangCheck(x: Int) = if (x in 1..10) "1 ~ 10 범위에 포함됩니다." else "1 ~ 10 범위에 포함되지 않습니다." fun rangCheck2(x: Int) = if (0 < x && x < 11) "1 ~ 10 범위에 포함됩니다." else "1 ~ 10 범위에 포함되지 않습니다." 출력 결과 1 ~ 10 범위에 포함됩니다. 1 ~ 10..
자바에있는 상위 타입인 Object는 코틀린에는 없습니다. 그 대신 코틀린에는 Object와 비슷한 상위 타입인 Any가 있습니다. fun main(args: Array) { println(typeCheck(null)) println(typeCheck(1)) println(typeCheck("1")) println("========================") val value = 7 // int 타입인 value의 값을 to'Type'()을 이용하여 강제 형변환 println(typeCheck2(value.toByte())) println(typeCheck2(value.toShort())) println(typeCheck2(value)) println(typeCheck2(value.toLong())..
if문은 자바와 동일합니다. 자바에서는 switch문 코틀린에서는 when문을 이용합니다. fun main(args: Array) { println(compareNum(1, 2)) println(compareNum2(1, 2)) println("=============") println(strNum(null)) println(strNum(1)) println(strNum(2)) println(strNum(3)) println(strNum2(null)) println(strNum2(1)) println(strNum2(2)) println(strNum2(3)) } // if문 fun compareNum(x: Int, y: Int): Int { if (x > y) return x else return y } ..