240522_디모의 코틀린 강의 #18강. 클래스의 다형성
2024. 5. 22. 16:26ㆍTIL(Today I Learned)
유튜브 - 디모의 코틀린 문법 강의 정리
#18강. 클래스의 다형성
1. 다형성: 클래스의 상속에서, 수퍼클래스를 서브클래스로 / 서브클래스를 수퍼클래스로 인식할 수 있는 개념
2. 업캐스팅(Up-Casting): Cola 인스턴스를 Drink 변수에 담는 것
var a:Drink = Cola()
3. 다운캐스팅(Down-Casting): 업캐스팅된 인스턴스를 하위 자료형으로 변환하는 것
- 다운캐스팅 시 별도의 연산자인 'as', 'is'가 필요함
- as: 변수를 호환되는 자료형으로 변환해주는 캐스팅 연산자
var a:Drink = Cola() // 업캐스팅
a as Cola // 다운캐스팅과 동시에 자료형 변환
- is: 변수가 자료형에 호환되는지 확인한 후 변환하는 캐스팅 연산자(조건문과 함께 사용)
var a:Drink = Cola() //업캐스팅
if (a is Cola){
...
}
fun main(){
var a = Drink()
a.drink() // 음료를 마십니다
var b:Drink = Cola()
b.drink() // 음료 중에 콜라를 마십니다 => b는 Drink 변수라서 이대로는 washDished 함수 호출 불가 => 다운캐스팅 필요
if (b is Cola){ // is => 조건문 하에서 잠시 다운캐스팅
b.washDishes() // 콜라로 설거지를 합니다
}
var c = b as Cola
c.washDishes() // 콜라로 설거지를 합니다
}
open class Drink{
var name = "음료"
open fun drink(){
println("${name}을 마십니다")
}
}
class Cola:Drink(){
var type = "콜라"
override fun drink(){
println("${name} 중에 ${type}을 마십니다")
}
fun washDishes(){
println("${type}로 설거지를 합니다")
}
'TIL(Today I Learned)' 카테고리의 다른 글
240524_디모의 코틀린 강의 #20강. 리스트 (0) | 2024.05.23 |
---|---|
240523_디모의 코틀린 강의 #19강. 제너릭 (0) | 2024.05.23 |
240521_디모의 코틀린 강의 #17강. 익명객체와 옵저버 패턴 (0) | 2024.05.20 |
240520_디모의 코틀린 강의 #16강. 오브젝트 (0) | 2024.05.20 |
240517_디모의 코틀린 강의 #15. 스코프 함수 (0) | 2024.05.20 |