티스토리 뷰
상속이란
- 상속은 클래스 간의 관계를 설정하여 하위 클래스(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 |