Android

상속불가, data처리하기 위해 특화된 클래스 {} 안에 필드들을 정의할 수 있다. {}안에서도 맴버필드나 메소드를 정의할 수도 있다 data 클래스도 멀티리턴처럼 보일 수 있다 (Destructuring Declarations) 가장 유용한 것은 copy{}함수
협업과 분업을 위해 interface와 abstract 를 사용한다 interface는 interface 이름 {} 으로 정의 오버라이드 하기 위해 open이나 기타 지시자로 정의할 필요 없다 abstract class는 구현 상속할 메소드도 abstract로 정의해아한다 그리고 상속에서는 override로 정의 static을 사용하려면 클래스 내에 companion object {}를 만들고 그안에 메소드나 맴버필드를 정의한다.
선조 클래스에서 메소드와 필드를 open으로 정의 상속받은 클래스에서 override로 정의 오버로딩은 자바와 동일. 같은 이름의 다른 파라미터를 받는 메소드를 정의
파일명과 클래스명이 달라도된다. 클래스는 class 이름{} 형태 생성자는 constructor(매개변수){} 형식을 쓰지만, class 이름(변수명: 데이터형 ..){}로 쓰이기도 한다. Kotlin에서 기본은 상속이 금지. 선조 클래스를 open class 이름{}으로 선언해야 가능하다 상속은 class 이름 : 선조클래스명(생성자인자){} 형식
Java 와 문법은 비슷하지만 정책이 다름 Kotlin에서 try{} catch 필수가 아닌 선택 프로그램 로직에서 예외처리를 권장 null체크는 무척 까다롭다 !!는 null일때 종료한다 ?는 null일때 뒤에 부분을 실행하지 않는다.
Kotlin에서 Collections는 열거형 데이터를 관리하는 데 필수적인 클래스 집합 읽기 전용 List -> listOf, 항목의 데이터형을 혼합해도 됨 수정가능 List -> mutableListOf, 제너릭()으로 데이터형을 반드시 선언, 각종 메서드(add,remove...) Map은 hashMapOf(키 to 값 .. 형식)
Kotlin에서 레이블은 매우 중요 함수형 언어이기에 리턴되는 곳을 명확히 할 필요 return 반환 값 : 값만 있으면 호출된 함수로 이동 return@레이블 반환값 : 해당 레이블로 값을 가지고 복귀 break, continue : break는 반복문을 종료하고 나간다. continue는 다음라인을 무시하고 반복문의 처음으로 나감 break@레이블, conintue@레이블 : break 는 반복문을 종료하고 지정한 레이블로 나간다. continue는 다음라인을 무시하고 지정한 레이블로 이동
if 문은 Java와 유사 단지 Any타입이 쓰이며, in,is 등과 함꼐 사용되어 더유연하게 사용 반목문은 for문은 for(변수 in 배열 or 범위){}형식으로 사용 if case문의 결과를 바로 변수로 대입시킬수 있다 27행 함수는 When을 이용해 Switch Case 같이 사용하는 듯 하다 35행에 보면 in (0..9)는 0부터 9 범위를 나타낸다 나머지는 다른 언어와 별 차이 없어보인다
위와 같이 함수 선언에 다양한 형태가 있다 fun 함수명( 변수명 : 데이터크기....): 리턴값 {return;} 한줄로 표현가능한 함수는 {}대신 = 로정의 가능하다. 함수형 변수의 값 : {변수정의 -> 코드구현} 함수형 변수의 형 : {입력정의} -> 리턴정의 20행과 같이 : 뒤에 자료형을 선언하면 자료형을 변환하는 함수인듯 하다 예를들어 C++코드에서 String funByRetrun(String s) 와 같은 것 같다 34행은 익명함수라고 하는데 이부분은 좀 더 알아보고 후에 정리해야함!
Any 설명 최종 대입된 값으로 형이 결정 어떠한 형을 대입시켜도 처리가능한 변수형 null은 엄격히 구분