Kotlin Class, 상속
2020. 11. 5. 14:36ㆍ모바일/Android_Kotlin
Class 초기화
class Person (name : String ){
var name = name;
}
- 클래스를 상속하는 경우 반드시 부모 클래스의 생성자를 호출해야 한다. 위에서는 AppCompatActivity의 기본 생성자를 호출하는 것을 확인할 수 있다.
- 부모 클래스의 생성자가 여러 형태일 경우, 클래스 선언부에서 부모 클래스의 생성자를 호출하는 대신 별도의 생성자 선언에서 부모 클래스의 생성자를 호출하도록 구현할 수 있다.
class HelloActivity : View{
constructor(context: Context) : super(context){
}
}
Class Init
//
class Student(name : String){
init{
println(name)
}
}
==
class Student{
constructor(name : String){
println(name)
}
}
==
class hello (val name : String)
- 코틀린 기본생성자는 코드를 포함할 수 없다..
- 초기화 부분을 여기서 하라고 선언한다.
- 자바에서는 생성자 영역에서 변수를 바로 초기화할 수 있지만 기본 생성자가 클래스 옆에 붙기 때문에 초기화를 어떻게 해야 할지 몰라서 init {}이라는 영역에서 초기화를 해야 한다. (두 번째 소스처럼 init 없이 직접 하여도 된다. ) 자바에서 하듯이 this.field로 접근이 가능하다 그렇다면 한두 개짜리를 짜도 계속 init을 써야 하는 것일까? 이러한 생각에 코틀린에서는 좀 더 색다른 방법을 제공합니다.
기본생성자+ 보조생성자
class Person (var name : String ){
constructor(name:String , age : Int) : this(name){
}
}
보조생성자
class Person {
var name : String = "";
var age : Int? = null;
constructor( name : String ){
this.name = name;
}
constructor(name:String , age : Int){
this.name = name;
this.age = age;
}
}
출처 : https://junghun0.github.io/2019/07/22/kotlin-interface/
'모바일 > Android_Kotlin' 카테고리의 다른 글
DataBinding – Two-way(양방향) Databinding with Custom View (0) | 2021.03.04 |
---|---|
take (0) | 2020.12.17 |
[Kotlin] Sequence (0) | 2020.12.17 |
[kotlin] filter, map, all, any, count, find, groupBy, flatMap 함수 정리 (0) | 2020.12.17 |
일급 시민, 일급 객체, 일급 함수 (0) | 2020.12.03 |