#What
- kotlin을 사용하기 위한 최소한의 코드 작성법을 알아보자
#변수
- 변수 선언 키워드 val vs var
- val = value = 변경 불가 = immutable =한 번 값이 셋팅 되면 변경 할 수 없는 final 변수
- var = variable = 변경 가능 = mutable
- 타입 생략 가능/코틀린 컴파일러가 타입 추론 해 줌
- val testStr : String (가능)
- val testStr = "" (가능)
- val test (불가능 -> 타입을 생략할 경우 초기화 필수!! 왜?? 컴파일러가 타입 추론할 건덕지가 없기 때문)
#함수
fun 함수명(param1 : String, param2 :String) : 리턴타입{
return ~
}
fun getLongerString(str1 : String, str2 :String) : String {
return if(str1.length > str2.length) str1 else{str2}
}
'식' = 'expression'(변수 대입 가능) 으로 Return 표현 가능
fun getLongerString(str1 : String, str2 :String) : String = if(str1.length > str2.length) str1 else{str2}
'식' = 'expression'('변수 대입 가능) 으로 Return 표현 시 Return 타입 생략 가능 (이 또한 컴파일러 타입 추론)
fun getLongerString(str1 : String, str2 :String) = if(str1.length > str2.length) str1 else str2
함수가 꼭 클래스 안에 있지 않아도 된다
//한 파일 내에 class와 function을 따로 사용 할 수 있다
class Test(val param: String, val param2: String) {
~~~
}
fun funOutOfClass(): Boolean {
var result: Boolean = true
~~~
return result
}
//여러 클래스를 한 파일에 넣어 사용 할 수도 있다
class Test2(val param: String, val param2: String) {
~~~
}
#클래스
- 기본적으로 public (생략 가능)
- 자바의 멤버변수와 getter setter를 자동으로 만들어주는 property 기능 제공(property = 필드 + 접근자)
클래스 선언 with 프로퍼티
class Student(var name : String, var age : Int) //프로퍼티
프로퍼티 사용법
val student = Student("Tina", 20)
println(student.name) // == student.getName()
println(student.age)// == student.getAge()
student.age = 30 // == student.setAge(30)
프로퍼티 응용법
isAdult처럼 추가로 프로퍼티를 추가해서 쓸 수 있으며, getter의 return 값을 내부에서 생성해서 반환 할 수 있다(getter만 존재)
class Student(var name:String, var age : Int){
//프로퍼티의 접근자를 직접 작성(커스텀 접근자) (1)
val isAdult : Boolean
get(){
return age>20
}
//프로퍼티의 접근자를 직접 작성(커스텀 접근자) (2)
val isAdult2: Boolean
get() = age > 20
}
val student = Student("Tina", 20)
println(student.isAdult)
println(student.isAdult2)
출처 : Kotlin In Action - 에이콘 출판사
(위 도서를 학습하고 개인 학습용으로 정리한 내용입니다)
문제 있을시 알려 주세요.
좋은 하루 되세요!
'Kotlin' 카테고리의 다른 글
[Kotlin] 3. Data Class, by (0) | 2021.11.07 |
---|---|
[Kotlin] 3.Interface, Class, 변경자, 초기화블록, 추상 프로퍼티 (0) | 2021.11.06 |
[Kotlin] 2. 코틀린 기본 - 함수(2) (0) | 2021.11.02 |
[Kotlin] 2. 코틀린 기본 - 함수(최상위/확장) (0) | 2021.10.31 |
[Kotlin] 1. 코틀린이란? (0) | 2021.10.17 |