엄코딩의 개발 일지


부모 클래스의 생성자가 여러 개인 클래스를 상속 


다음은 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)
}


생성자에서 thissuper를 쓰는 경우


super를 쓰는 경우는 상속을 받아 클래스를 재구성할 때 상속 받은 부모 클래스의 초기화를 위해서 사용


클래스를 만들 때는 자신의 클래스를 초기화하는 방법으로 this 사용



'Kotlin > kotlin 생성자' 카테고리의 다른 글

코틀린 생성자  (0) 2017.10.31