[코틀린 인 액션] CH4 클래스, 객체, 인터페이스 Quiz

0

코틀린 인 액션

목록 보기
5/13
post-thumbnail

[코틀린 인 액션] CH4 클래스, 객체, 인터페이스 Quiz

이 포스팅은 <<Kotlin in Action>>, 드미트리 제메로프 & 스베트라나 이사코바, 에이콘출판사(2017)을 읽고 개인 학습용으로 정리한 글입니다.

  • 다음과 같이 Person 인터페이스와 그 인터페이스를 구현하는 Student 클래스가 있다.
interface Person{
	fun work()
    fun sleep()
}

class Student: Person{
	override fun work() = println("work")
	override fun sleep() = println("sleep")
	fun study() = println("study")
}
  • LazyStudent 라는 클래스를 만들고 싶다.
    Student 클래스를 상속하여 기존 기능들은 그대로 유지하고,
    "game"문자열을 출력하는 game메서드를 새로 추가하고 싶다.

  • 하지만 Student 클래스는 open 클래스가 아니므로 상속 불가능하다.
    이럴 때 LazyStudent를 어떻게 구현해야하는가?
    (hint: 클래스 위임)

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

//데코레이터 패턴
class LazyStudent: Person{
	val student = Student()
	override fun work() = student.work()
	override fun sleep() = student.sleep()
    fun study() = student.study()
    fun game() = println("game")
}

//by 키워드
class LazyStudent(val student: Student): Person by student{
    fun study() = student.study()
    fun game() = println("game")
}
profile
Be able to be vulnerable, in search of truth

0개의 댓글