티스토리 뷰

IT/Kotlin

[Kotlin] Kotlin 상속

forest-33 2024. 3. 26. 21:11

상속이란

  • 상속은 클래스 간의 관계를 설정하여 하위 클래스(subclass)가 상위 클래스(superclass)의 특성을 상속받는 것을 의미
  • 이를 통해 코드의 재사용성을 높이고 객체 지향 프로그래밍의 핵심 원칙 중 하나인 추상화를 구현할 수 있음

상속 선언

  • Kotlin에서 상속은 ' : ' 연산자를 사용하여 선언
  • 하위 클래스가 상위 클래스를 상속받을 때는 : 연산자 뒤에 상위 클래스의 이름을 적음
open class Animal {
    fun eat() {
        println("Animal is eating")
    }
}

class Dog : Animal() {
    fun bark() {
        println("Dog is barking")
    }
}

 

open class Animal(val name: String) {
    // ...
}

class Dog(name: String, val breed: String) : Animal(name) {
    // ...
}

 

open 키워드:

  • 코틀린에서는 상속을 허용하기 위해 상위 클래스와 오버라이드할 수 있는 메서드를 선언할 때 open 키워드를 사용해야 함
  • 디폴트로 클래스나 메서드는 상속이 금지되어 있음
open class Animal {
    open fun makeSound() {
        println("Animal is making a sound")
    }
}

class Dog : Animal() {
    override fun makeSound() {
        println("Dog is barking")
    }
}

 

다중 상속 제한

  • 코틀린은 다중 상속을 지원하지 않음
  • 즉, 하나의 클래스는 여러 클래스를 동시에 상속받을 수 없으며, 코틀린은 인터페이스를 통한 다중 상속의 장점을 활용할 수 있음

 

상속을 이용한 디자인 패턴

abstract class Game {
    abstract fun initialize()
    abstract fun startPlay()
    abstract fun endPlay()

    // 템플릿 메서드
    fun play() {
        initialize()
        startPlay()
        endPlay()
    }
}

class Football : Game() {
    override fun initialize() {
        println("Football Game Initialized! Start playing.")
    }

    override fun startPlay() {
        println("Football Game Started. Enjoy the game!")
    }

    override fun endPlay() {
        println("Football Game Finished!")
    }
}

class Cricket : Game() {
    override fun initialize() {
        println("Cricket Game Initialized! Start playing.")
    }

    override fun startPlay() {
        println("Cricket Game Started. Enjoy the game!")
    }

    override fun endPlay() {
        println("Cricket Game Finished!")
    }
}

fun main() {
    val football = Football()
    football.play()

    println()

    val cricket = Cricket()
    cricket.play()
}

'IT > Kotlin' 카테고리의 다른 글

[Kotlin] 반복문 for, while, do-while  (0) 2024.03.26
[Kotlin] 조건문 IF, When, 비교(==, ===)  (0) 2024.03.26
[Kotlin] 제네릭 클래스, 제네릭 함수  (1) 2024.03.25
[Kotlin] Kotlin Class  (0) 2024.03.19
[Kotlin] Kotlin Null  (0) 2024.03.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함