![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/luPLN/btqvzJOzsT0/TxK1WNu6262KfJoAzKb9z0/img.png)
코틀린에서 변수앞에 :: (더블 콜론)을 명시하면 변수를 객체로 액세스 하여 객체에 대한 속성을 참조 할수 있습니다. 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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/48zMp/btqvACg8OOR/ho2aOmAI3KYAPp59PBJaJK/img.png)
자바에서 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. 코틀린 변수 정의하기
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ZHX4Y/btqvxtL9gho/3iiX39lnKcCqZ3cXJBU710/img.png)
오버로딩(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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ZMkso/btqvvxoeDJp/880LpKAzXeJ4BmHW08ozTK/img.png)
상속이란 부모의 자원을 자식이 상속받아 사용하는 것 자바에서 상속 방법 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 키워..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/IwZMB/btqvvDHrj1Z/2sINm4lraQIAybO16oTLG0/img.png)
코틀린은 자바와 똑같이 클래스는 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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cacIZE/btqvsyf06tl/eRCynTTvPiveIucaG26qYk/img.png)
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) ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Xahnd/btqvrEgRMSu/WO66kaVUTlKkoepnL85sK1/img.png)
자바에서는 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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/xki4C/btqvtf7hafi/kh9cqevZkCPbyzdoJEUxVk/img.png)
자바에있는 상위 타입인 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())..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cCG7KL/btqvqNExTuv/HRtynPvrlRVF3mfbt71gEk/img.png)
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 } ..