Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- onMeasure
- 알고리즘
- sqlite
- CoordinatorLayout
- Navigation
- kotlin
- ViewModel
- activity
- notification
- DataBinding
- Algorithm
- Android
- LiveData
- CollapsingToolbarLayout
- View
- 코틀린
- AppBarLayout
- BOJ
- hilt
- Behavior
- CustomView
- 알림
- recyclerview
- 백준
- onLayout
- lifecycle
- HTTP
- Coroutine
- 안드로이드
- room
Archives
- Today
- Total
개발일지
Kotlin in A..Z (13) - 클래스 본문
- 클래스 선언하기
코드
// 클래스 선언
class Something {
// 프로퍼티
val id:Long = 0
// 메서드
fun action() {
}
}
- 인스턴스 선언하기
생성자를 통해 인스턴스를 생성할 수 있다.
코드
val something = Something()
- 주 생성자
코드
// 주 생성자 정의
class Something constructor(_id:Long) {
val id: Long = _id
}
fun main() {
// 주 생성자로 인스턴스 생성
val something = Something(123L)
}
- constructor를 생략한 주 생성자
코드
// 주 생성자 정의
class Something(_id:Long) {
val id: Long = _id
}
fun main() {
// 주 생성자로 인스턴스 생성
val something = Something(123L)
}
- 프로퍼티를 포함한 주 생성자
코드
// 주 생성자 정의
class Something(val id:Long) {
}
fun main() {
// 주 생성자로 인스턴스 생성
val something = Something(123L)
}
- 주 생성자도 함수처럼 디폴트 값을 넣을 수 있다.
코드
// 디폴트값 정의
class Something(val id:Long = 0) {
}
fun main() {
val something0 = Something() // id = 0
val something1 = Something(123L) // id = 123
val something2 = Something(id = 12) // id = 12 를 명시
}
- init 블럭을 사용한 초기화
클래스가 생성될 때 초기화를 시킬 수 있는 블록
주 생성자는 블록을 가질 수 없기 때문에 init 블럭에서 초기화를 진행해야 한다.
코드
// 주 생성자 정의
class Something(val id:Long) {
init {
println("Something ID : $id")
}
}
fun main() {
val something = Something(123L)
}
결과
Something ID : 123
- 부 생성자 (constructor)
클래스는 부 생성자를 이용해 생성자를 여러개 정의할 수 있다.
주 생성자가 없는 부 생성자 정의
코드
class Something {
val id: Long
constructor(id: Long) {
this.id = id
}
constructor(id:String) {
this.id = id.toLong()
}
}
fun main() {
val something1 = Something(123)
val something2 = Something("123")
}
주 생성자가 있는 부 생성자 정의
코틀린에서 주 생성자가 있는 경우 부 생정자를 정의 할 때 꼭 주 생성자를 호출해야한다.
코드
class Something(var id: Long){
constructor() : this(0) {
}
constructor(id:String) : this(id.toLong()){
}
}
fun main() {
val something1 = Something(123)
val something2 = Something()
val something3 = Something("123")
}
- 메서드 오버로딩
같은 이름을 가진 함수가 여러개 있더라도 매개변수의 형태가 다르면 정의할 수 있다.
상황에 맞게 호출됨
코드
class Math {
fun add(x: Int, y:Int) = x + y
fun add(x: Int, y:Int, z:Int) = x + y + z
fun add(str1: String, str2:String) = str1.toInt() + str2.toInt()
}
fun main() {
val math = Math()
println(math.add(1, 2))
println(math.add(1, 2, 3))
println(math.add("12", "22"))
}
결과
3
6
34
'Kotlin (코틀린)' 카테고리의 다른 글
Kotlin in A..Z (15) - 가시성 지시자 (0) | 2020.07.15 |
---|---|
Kotlin in A..Z (14) - 상속 (0) | 2020.07.15 |
Kotlin in A..Z (12) - for, while, do ~ while (0) | 2020.07.15 |
Kotlin in A..Z (11) - when (0) | 2020.07.15 |
Kotlin in A..Z (10) - if문 (0) | 2020.07.15 |
Comments