부모 클래스의 생성자가 여러 개인 클래스를 상속
다음은 AlertDialog를 상속받는 CustomDialog입니다.
부모 클래스가 생성자를 가지고 있으니 초기화해야 한다는 에러가보입니다.
첫 번째 방법
CustomDialog의 디폴트 생성자를 만들어 받은 인자를 그대로 부모 클래스 AlertDialog에 넘겨주는 방법입니다.
class CustomDialog(context: Context):AlertDialog(context)
{
}
두 번째 방법
디폴트 생성자를 사용하지 않고 두 번째 생성자를 만들어서 super를 불러주는 방법입니다.
class CustomDialog:AlertDialog
{
constructor(context: Context?) : super(context)
}
두 가지 방법중에, 두 번째 방법이 확장성이나 사용성 면에 있어서 훨씬 좋습니다.
첫 번째 방법은 이미 부모 클래스의 디폴트 생성자가 정해져 달리 방법이 없습니다.
그래서 다음 에러가 발생합니다.
하지만, 두 번째 방법으로는 처리할 수 있습니다.
class CustomDialog:AlertDialog
{
constructor(context: Context) : super(context,android.R.style.Theme_NoTitleBar_Fullscreen)
constructor(context:Context, themeId:Int):super(context, themeId)
}
생성자에서 this와 super를 쓰는 경우
super를 쓰는 경우는 상속을 받아 클래스를 재구성할 때 상속 받은 부모 클래스의 초기화를 위해서 사용
클래스를 만들 때는 자신의 클래스를 초기화하는 방법으로 this 사용
'Kotlin > kotlin 생성자' 카테고리의 다른 글
코틀린 생성자 (0) | 2017.10.31 |
---|