[Kotlin] 오버라이딩, 오버로딩

Subeen·2023년 12월 5일
0

Kotlin 문법

목록 보기
12/23

오버라이딩

  • 오버라이딩은 부모-자식 상속 관계에 있는 클래스에서 상위 클래스의 메서드를 하위 클래스에서 재정의하는 것을 말한다.
  • 오버라이딩을 하기 위해서는 하위 클래스에서 선언하려는 멤버가 상위 클래스의 멤버와 이름과 형태가 동일해야 하며 함수가 open되어 있어야 한다.
fun main() {
    // open class인 Animal 클래스는 단독 사용이 가능하다.
    Animal().printSound()  // growl growl!
    Dog().printSound()  // bark bark!
    Cat().printSound()  // mew mew!
}

open class Animal() {
    open fun printSound() {  하위 클래스에서 선택적으로 override 할 수 있다.
        println("growl growl!")
    }
}

class Dog: Animal() {
    override fun printSound() {  // 재정의
        println("bark bark!")
    }
}

class Cat: Animal() {
    override fun printSound() {  // 재정의
        println("mew mew!")
    }
}

오버로딩

  • 오버로딩은 이름이 동일한 함수이긴 한데 매개 변수의 개수가 다르거나 매개 변수의 자료형이 다른 함수를 가리키는 용어이다.
  • 같은 이름의 함수로 다른 기능을 할 수 있게 한다.
  • 반환 타입은 오버로딩에 영향을 주지 않으며 매개변수의 타입과 개수가 동일한 함수일 경우 반환 타입이 다르면 안 된다.
fun main() {
	sum(5, 10)  // 15
    sum(1.0, 2.0)  // 3.0
}
// 매개 변수의 개수는 동일하지만 매개 변수의 자료형이 다른 두 개의 sum 함수 
fun sum(x:Int, y:Int){
    println(x + y)
}

fun sum(x:Double, y:Double){
    println(x + y)
}
fun main() {
	sum(5, 10)  // 15
    sum(1, 2, 3)  // 6
}

// 매개 변수의 자료형은 동일하지만 매개 변수의 개수가 다른 두 개의 sum 함수 
fun sum(x:Int, y:Int){
    println(x + y)
}

fun sum(x:Int, y:Int, z:Int){
    println(x + y + z)
}
profile
개발 공부 기록 🌱

0개의 댓글