[Kotlin 깃북] Ch3 코틀린 사용을 위한 기본 문법
7. 클래스와 설계 (2)
클래스의 상속
- open 키워드로 만들어진 클래스만 부모 클래스로 사용 가능
- 자식 클래스에서 콜론(:)을 이용하여 부모 클래스 지정
- 상속은 자식이 부모 클래스의 인스턴스를 갖는 과정
-> 부모 클래스의 생성자 호출해야
open class 상속될 부모 클래스 {
}
class 자식 클래스: 부모 클래스() {
}
- 상속될 부모 클래스의 생성자에 파라미터가 있는 경우
-> 자식 클래스의 생성자를 통해 값 전달
open class 부모 클래스(value: String) {
}
class 자식 클래스(value: String): 부모 클래스(value) {
}
- 상속될 부모 클래스에 세컨더리 생성자가 있는 경우
-> 자식 클래스의 세컨더리 생성자에 super 키워드로 부모 클래스에 전달
- 자식 클래스에 세컨더리 생성자만 있을 경우
-> 상속될 부모 클래스명 다음 괄호 생략
-> 부모 클래스 프라이머리 생성자 호출 X
class CustomView: View {
constuctor(ctx: Context): super(ctx)
constructor(ctx: Context, attrs: AttributeSet): super(ctx, attrs)
}
부모 클래스의 프로퍼티와 메서드 사용
open class Parent {
var hello: String = "안녕하세요"
fun sayHello(){
Log.d("inheritance", "${hello}")
}
}
class Child: Parent(){
fun myHello() {
hello = "Hello!"
sayHello()
}
}
프로퍼티와 메서드의 재정의: 오버라이드
- open 키워드가 붙은 프로퍼티나 메서드만 오버라이드 가능
익스텐션
- 상속: 미리 만들어져있는 클래스의 메서드 사용
📌익스텐션: 미리 만들어져있는 클래스에 메서드 추가
- 익스텐션을 사용한다고 해서 실제 클래스의 코드 변경되는 것 X
-> 실행 시 도트 연산자로 호출하여 사용할 수 있게 해줌
fun 클래스.확장할 메서드(){
}