Kotlin

다형성

공부처음하는사람 2023. 12. 23. 23:40

다형성 (polymorphism)이란?

  • 같은 이름을 사용하지만 구현 내용이 다르거나, 매개변수가 달라서 하나의
    이름으로 다양한 기능을 수행할 수 있는 개념이다.
  1. Static Polymorphism
  • 컴파일 타임에서 결정되는 다형성
  • 단순하게 보면 메서드 오버로딩을 사용할 때
  1. Dynamic Polymorphism
  • 런타임 다형성
  • 동적으로 구성되는 오버라이딩된 메서드를 사용할 때

오버라이딩 (overriding)

  • 기능을 완전히 다르게 바꾸어 재설계
  • 누르다 -> 행위 -> push()
  • push()는 '확인' 혹은 '취소' 용도로 서로 다른 기능을 수행할 수 있다.

오버로딩(overloading)

  • 기능은 같지만 인자를 다르게 하여 여러 경우를 처리
  • 출력한다 -> 행위 -> print()
  • print(123), print("hello") 인자는 다르지만 출력의 기능은 동일함.

메서드 오버라이딩의 예

open class Bird { // open키워드로 상속이 가능하다.
...
    fun fly( {...} // 최종 메서드로 오버라이딩 불가 (open이 안붙었기 때문이다.)
    open fun sing() {...} // open을 사용했기에 하위 클래스에서 오버라이딩 가능
}

class Lark () : Bird() { // 하위클래스
    fun fly() { /* 재정의 */ }  // 에러. 상위 메서드에 open키워드가 없기때문
    override fun sing() { /* 재정의 */ } // 오버라이딩 가능

파생 클래스에서 오버라이딩을 금지할 때

open class Lark() : Bird () {
    final override fun sing() { /* 재정의 */} // 하위클래스에서 재정의 금지
}
  • final 키워드를 사용해 추가로 파생되는 클래스에서는 fun sing의 함수를 오버라이딩 할 수 없다.

'Kotlin' 카테고리의 다른 글

프로퍼티 (Getter / Setter)  (0) 2023.12.24
캡슐화  (0) 2023.12.24
예외 처리  (1) 2023.12.23
확장 함수  (1) 2023.12.23
고차함수와 람다식  (1) 2023.12.23