모던 안드로이드 - 코틀린과 JetPack 활용 #5 - data 클래스, 상속, 인터페이스 구현

in #kr3 years ago (edited)

data 클래스

  • 데이터 저장 용도로 사용
  • 서버 연동시 데이터 객체는 JSON 데이터로 보내거나 받을 수 있음
data class 클래스_이름(
    1개 이상의 필드
)
data class Person(
    val name: String,
    var score: Int
)

상속

  • 부모 클래스: class 키워드 앞에 open 키워드를 명시해야 자식 클래스 정의 가능
open class 부모클래스_이름 {
   // ...
}
  • 자식 클래스
    • 주생성자 정의시 주의할 점
      • 부모 클래스로부터 상속받을 필드는 파라메터로 기입하되 val, var 등의 키워드는 빼야 함
    • 자바와 다른 점
      • extends 키워드 대신 콜론(:) 사용
      • 부모 클래스 이름만 쓰는 게 아니라 부모 클래스의 생성자 호출
class 자식클래스_이름 : 부모클래스_생성자_호출 {

    // 부모 클래스로부터 받은 메소드 오버라이드
    // 필드, 메소드(함수) 추가 정의

}

인터페이스 구현

  • 형식
class 자식클래스_이름 : 인터페이스 이름 {

    // 인터페이스에 선언된 메소드 구현
    // 필드, 메소드(함수) 정의

}
interface Drivable {
    fun drive(distanceKm: Float)
}

class Car(val id: Int, var distanceKm: Float = 0.0f) : Drivable {
    override fun drive(distanceKm: Float) {
        this.distanceKm = this.distanceKm + distanceKm
    }

    override fun toString(): String {
        return "{ id: ${id}, distanceKm: ${distanceKm} }"
    }
}

fun main() {
    val car = Car(1)
    car.drive(12.3f)
    println(car)
}
실행 결과
{ id: 1, distanceKm: 12.3 }

모던 안드로이드 - 코틀린과 JetPack 활용 (지난 내용)