목차
1. class 특징
2. primary/secondary constructor
3. 오버라이딩
4. 초기화 순서
5. super 키워드
1. class 특징
- 모든 클래스는 슈퍼 클래스로 Any 클래스를 가진다.
Any 클래스는 3개의 메소드가 있다. equals(), hashCode(), toString()
- 모든 클래스는 final로 선언되어 있다. 그래서 상속시에 open 키워드를 사용해야 한다.
open class Shape() {}
class Circle : Shape(){}
2. primary/secondary constructor
primary constructor
class Circle(_param : String){}
class Circle2 constructor (_param: String){}
클래스 정의와 동시에 생성자를 정의하는 경우를 말한다
secondary constructor
class Circle{
constructor(_param : String)
constructor(_param : String, _param2: String)
}
class { 이후에 나오는 모든 생성자들을 말한다
3. 오버라이딩
메소드 , 멤버 변수 : 오버라이딩시 open 키워드 필요, 없을 시 오버라이딩 불가
멤버 변수 val : getter
멤버 변수 var : getter / setter
open class Parent{
open var open = 1
var noOpen = 2
open fun openMethod(){}
fun noOpenMethod(){}
}
class Child : Parent(){
override var open: Int
get() = super.open
set(value) {}
override fun openMethod() {
super.openMethod()
}
}
4. 초기화 순서
open class Parent(_text : String){
init {
Log.e("parent","init")
}
open var text = _text.also {
Log.e("parent","property init")
}
}
class Child(_text : String) : Parent(_text.also { Log.e("parent","constructor") }){
init {
Log.e("child","init")
}
override var text: String = super.text.also { Log.e("child","override_property") }
}
자식 생성자 -> 부모 생성자 -> 부모 init -> 부모 초기화 -> 자식 init -> 자식 초기화
5. super 키워드
부모를 지칭하는 키워드, 부모의 메소드, 속성값들을 호출 할 수 있다.
open class Parent{
open fun parentMethod(){
Log.e("Parent","method")
}
}
class Child : Parent(){
override fun parentMethod() {
super.parentMethod()
}
}
'코틀린 > 개념' 카테고리의 다른 글
[kotlin/코틀린] 코루틴 (Coroutine) (0) | 2021.07.12 |
---|