프로퍼티와 메서드의 재정의 : 오버라이드

Suyong Lee·2021년 9월 7일
0

Android

목록 보기
14/22
post-thumbnail

동일한 이름의 메서드나 프로퍼티를 사용할 필요가 있을 경우에 override 키워드를 사용해서 재정의할 수 있다.

오버라이드할 때는 프로퍼티나 메서드도 클래스처럼 앞에 open을 붙여서 상속할 준비가 되어 있어야 한다.

메서드 오버라이드

상속할 메서드 앞에 open 키워드를 붙이면 오버라이드할 수 있지만, open 키워드가 없는 메서드는 오버라이드할 수 없다.

open class BaseClass {
	open fun opened() {
    }
    fun notOpened() {
    }
}

class ChildClass: BaseClass() {
	override fun opened() {
    } (O)
    override fun notOpened() { 
    } (X) // notOpened 메서드는 open 키워드가 없으므로 재정의가 불가능하다.
}

프로퍼티 오버라이드

프로퍼티 역시 open으로 열려 있어야만 오버라이드할 수 있다.

open class BaseClass2 {
	open var opened: String = "I am"
}

class ChildClass2: BaseClass2() {
	override var opened: String = "You are"
}

익스텐션

코틀린은 클래스, 메서드, 프로퍼티에 대해 익스텐션을 지원한다. 이미 만들어져 있는 클래스에 다음과 같은 형태로 메서드를 추가할 수 있다.

fun 클래스.확장할 메서드() {
	//코드
}

상속이 미리 만들어져 있는 클래스를 가져다 쓰는 개념이라면 익스텐션은 미리 만들어져 있는 클래스에 메서드를 넣는 개념이다.

실행 시에 도트 연산자로 호출해서 메서드를 사용할 수 있도록 해주는 것이다.

특별한 경우를 제외하고는 거의 메서드 확장 용도로 사용된다.

class MyClass {
	fun say()
    fun walk()
    fun eat()
}

MyClass.say() {
	// 실행코드
}
MyClass.walk() {
	// 실행코드
}
MyClass.eat() {
	// 실행코드
}
profile
이수용

0개의 댓글