[Kotlin 깃북] Ch3 코틀린 사용을 위한 기본 문법 7. 클래스와 설계 (2)

0
post-thumbnail

[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 클래스.확장할 메서드(){
    // 코드
}
profile
Be able to be vulnerable, in search of truth

0개의 댓글