한 걸음 두 걸음
Kotiln 08 ] 상속 본문
반응형
상속
class 이름 :상속할거(){}
방식으로 사용합니다. :만 써줌으로써 할 수 있고, 아무것도 안쓸경우 Any가 상속됩니다.
open class AA{x : Int} //open 키워드를 써줌으로써 상속해줄 수 있는 클래스가 됩니다.
class BB(x:Int) : AA(x){}
기본적으로 코틀린의 모든 클래스는 final로 만들어지기때문에 open으로 사용해주어야합니다.
파생 클래스에 기본생성자가 없는 경우에는 super키워드를 사용하여 상속클래스의 생성자를 초기화시켜주어야합니다.
class MyView : View{
constructor() : super(1)
//매개변수가 없는 보조생성자
constructor(a : Int) this()
//인트형 a를 하나 받는 보조생성자는 this(매개변수가 없는 보조생성자)를 호출하여 super를 처리합니다.
}
메소드 오버라이딩
open class AA (x : Int){
open fun a(){} //함수도 open해주어야 파생클래스에서 override를 해줄 수 있습니다.
}
class BB () : AA(){
override fun a(){}
}
이는 함수 뿐만아니라 변수도 동일하게 작용합니다.
클래스나 인터페이스 상속 규칙
open class A{}
interface B {}
class c() : A(), B{
}
상속은 클래스의 경우 하나만 가능하고 인터페이스는 여러개 가능한 것은 자바와 동일합니다.
단, 코틀린의 인터페이스는 자바와 모양이 조금 다른데,
interface B {
fun f() { print("b" }
}
처럼 인터페이스 내부 함수에 body까지 작성해주어야합니다.
이 때 자식객체에서는 super<클래스명>을 통해 상위클래스나 인터페이스를 호출할 수 있습니다.
open class A {
open fun f(){ print("a") }
}
interface B {
fun f() { print("B") }
}
class C() : A(), B{
override fun f(){
super<A>.f()
super<B>.f()
}
}
//결과 : aB
추상클래스
abstract class 이름{
abstract 함수() //구현이 필요없음
}
이는 open을 안해줘서 가져다가 쓸 수 있습니다.
반응형
'Language > Kotlin' 카테고리의 다른 글
Kotlin 10 ] Data Class and 중첩클래스(Nested classes) (0) | 2019.05.20 |
---|---|
Kotlin 09 ] Properties and Fields (0) | 2019.05.20 |
Kotlin 07 ] 클래스와 상속 (0) | 2019.05.20 |
Kotlin ] 06 Package, Return and Jumps (0) | 2019.05.20 |
Kotlin 코틀린 ] 05 Control Flow (0) | 2019.05.20 |