240523_디모의 코틀린 강의 #19강. 제너릭
2024. 5. 23. 15:34ㆍTIL(Today I Learned)
유튜브 - 디모의 코틀린 문법 강의 정리
#19강. 제너릭
1. 제너릭: 함수나 클래스 선언 시 고정적인 자료형 대신 실제 자료형으로 대체되는 타입 파라미터(<T>, <U>, <V> 등)를 받아 사용하는 방법
- 캐스팅연산을 통해서도 같은 작업이 가능하지만, 캐스팅연산 시 속도가 저하될 수 있다는 문제가 존재함.
- 타입 파라미터에 특정 자료형이 할당되면 제너릭을 사용하는 모든 코드가 할당된 자료형으로 대체됨 =>
캐스팅연산 없이도 자료형 그대로 사용 가능
* 특정한 수퍼클래스를 상속받은 클래스 타입으로만 제너릭을 제한하려면 => < T:SuperClass명> 꼴로 작성하기.
for main(){
UsingGeneric(A()).doShouting() // A가 소리친다
UsingGeneric(B()).doShouting() // B가 소리친다
UsingGeneric(C()).doShouting() // C가 소리친다
doshouting(B())기 // 함수 적용 예시, B가 소리친다
}
fun <T:A> doShouting(t:T){
t.shout()
}
open class A{
open fun shout(){
println("A가 소리친다")
}
}
class B : A() {
override fun shout(){
println("B가 소리친다")
}
}
class C : A() {
override fun shout(){
println("C가 소리친다")
}
}
class UsingGeneric <T:A> (val t:T){ // 생성자의 제너릭 T에 맞는 인스턴스를 속성 t로 받기
fun doShouting(){
t.shout()
}
}
'TIL(Today I Learned)' 카테고리의 다른 글
240527_디모의 코틀린 강의 #21강. 문자열을 다루는 법 (0) | 2024.05.23 |
---|---|
240524_디모의 코틀린 강의 #20강. 리스트 (0) | 2024.05.23 |
240522_디모의 코틀린 강의 #18강. 클래스의 다형성 (0) | 2024.05.22 |
240521_디모의 코틀린 강의 #17강. 익명객체와 옵저버 패턴 (0) | 2024.05.20 |
240520_디모의 코틀린 강의 #16강. 오브젝트 (0) | 2024.05.20 |