본문 바로가기
  • Sunnny-Dev
카테고리 없음

[안드로이드 코틀린] 코틀린 문법-클래스4(상속)

by sunny- 2021. 10. 11.

클래스의 상속

부모 클래스는 open 키워드로 만들어야만 상속 가능하다. 

상속할 부모클래스는 콜론(:)을 이용

상속은 부모의 인스턴스를 자식이 갖는 과정이기 때문에 부모 클래스명 다음에 괄호를 입력해 꼭 부모 클래스의 생성자를 호출해야한다. 

open class Parents{
~~
}

class Child:Parents(){
~~
}

생성자 파라미터가 있는 클래스 상속

자식 클래스의 생성자를 통해 부모클래스의 파라미터에 전달됨

open class Parents(vlaue:String){
~~
}

class Child(value:String):Parents(value){
~~
}

**부모 클래스에 세컨더리 생성자가 있으면 자식 클래스의 세컨더리 생성자에 super 키워드로 부모 클래스에 전달.

super는 부모클래스를 지칭함

상속하는 부모클래스명 뒤에 괄호는 생략해준다

open class Parents{
	constructor(value:String){}
}

class Child:Parents{//괄호를 생략해준다.
	constructor(value:String):super(value)
}

오버라이드

상속받은 부모 클래스의 멤버 변수, 멤버 함수를 자식 클래스에서 다른 용도로 사용하기 위해서는 오버라이드가 필요. 

override키워드로 재정의 할 수 있다. 

오버라이드 할 때는 멤버 변수, 멤버 함수앞에 open키워드가 붙어있어야함

open class Parents{
	open var openedVal: String="yellow"
	open fun opened(){}
}

class Child:Parents(){
	override var openedVal:String="red"//멤버 변수 오버라이드
	override fun opened(){}//멤버 함수 오버라이드
}

익스텐션(확장)

미리 만들어져 있는 클래스에 메서드를 넣는 개념. 

class Students{
	fun name()
    fun order()
}

fun Studens.grade(){//student클래스에 grade함수를 추가로 넣고싶을때 사용.
}
??? 잘 이해가 안간다.

실제 클래스가 변경되는것이 아님. 

댓글