1. 프로퍼티와 메서드의 재정의 : 오버라이드
👩🏻💻 상속받은 부모 클래스의 프로퍼티와 메서드 중에 자식 클래스에서는 다른 용도로 사용해야 하는 경우가 있음
👩🏻💻 동일한 이름의 메서드나 프로퍼티를 사용할 필요가 있을 경우에 override 키워드를 사용해서 재정의 할 수 있음
👩🏻💻 오버라이드 할 때는 프로퍼티나 메서드도 클래스 처럼 앞에 open을 붙여서 상속할 준비가 되어 있어야 함
메서드 오버라이드
📍 상속할 메서드 앞에 open 키워드를 붙이면 오버라이드 할 수 있지만, open 키워드가 없는 메서드는 오버라이드 할 수 없음
open class BaseClass {
open fun opened() {
}
fun notOpened() {
}
}
class ChildClass : BaseClass() {
override fun opened() {
super.opened()
}
}
프로퍼티 오버라이드
📍 메서드 오버라이드처럼 프로퍼티 역시 open으로 열려 있어야만 오버라이드를 할 수 있음
open class BaseClass2 {
open var opened: String = "I am"
}
class ChildClass2: BaseClass2() {
override var opened: String = "You are"
}
2. 추상 클래스
🚀 추상 클래스는 그 자체로는 객체를 만들 수 없는 클래스로, 일반적으로 추상 메소드가 포함된 클래스를 말함
➡️ 추상 메소드란 아직 구현되지 않고 추상적으로만 존재하는 메소드
🚀 추상 클래스와 추상 메소드 앞에는 abstract 키워드를 붙임
🚀 상속받는 자식 클래스에 특정 메소드 구현을 강제하고 싶을 때 사용
🚀 추상 클래스 자체로는 직접 객체를 만들 수 없고 자식 클래스에서 추상 메소드를 구현한 다음, 자식 클래스의 객체를 생성하면 됨.
abstract class Game {
fun startGame() {
println("게임을 시작했습니다.")
}
// 추상 메소드
abstract fun printName()
}
class OverWatch: Game() {
override fun printName() { // 추상 메소드 구현
println("오버워치입니다.")
}
}
fun main() {
val overWatch = OverWatch()
overWatch.startGame() // 게임을 시작했습니다.
overWatch.printName() // 오버워치입니다.
}
[ 내용 참고 : IT 학원 강의 ]
'Programming Language > Kotlin' 카테고리의 다른 글
[Kotlin] 접근 제한자 (0) | 2024.04.22 |
---|---|
[Kotlin] 패키지, 추상화, 인터페이스 (0) | 2024.04.22 |
[Kotlin] 오브젝트, 데이터 클래스, 클래스 상속과 확장 (0) | 2024.04.17 |
[Kotlin] 클래스 사용, 생성자 (1) | 2024.04.17 |
[Kotlin] 컬렉션 - 셋 Set & 맵 Map (0) | 2024.04.13 |