amplitude.init("2e2e5a386856efdf3237cf254a9d14d9"

[개념 콕] 오버로딩과 오버라이딩의 차이

내일배움캠프 수료생이 개발에 꼭 필요한 핵심 개념만 콕 집어 드립니다.
Jun 07, 2024
[개념 콕] 오버로딩과 오버라이딩의 차이
✍🏼
개발을 시작하시는 여러분, 정보가 너무 많고 배워야 할 것도 산더미라 어디서부터 시작해야 할지 막막하신가요? 내일배움캠프 수료생들이 4개월 동안 배운 엄선된 핵심 개념을 직접 정리해서 알려 드립니다. 공부하다 막히거나 헷갈리는 개념이 있다면 개념 콕으로 정리해보세요.
 
코틀린과 자바의 오버로딩(Overloading) 개념은 기본적으로 동일합니다. 한 가지 차이점은 코틀린에서는 함수의 매개변수에 기본값을 지정할 수 있다는 점입니다. 이를 통해 일부 매개변수를 생략하고 호출할 수 있어 더욱 유연한 오버로딩이 가능합니다. 본 아티클은 코틀린에 기준하여 설명 드리겠습니다.
 

오버로딩(overloading)이란?

함수 이름은 동일하지만 매개변수 개수/타입이 다른 함수를 만드는 것을 일컫습니다. 함수 오버로딩을 사용하면 사용자 편의성과 코드 가독성이 향상됩니다. 하지만 너무 많은 함수를 오버로딩할 경우, 어떤 오버로드 함수가 호출되었는지 알기 힘듭니다. 즉, 코드를 해석하기 힘들어질 수 있습니다.

오버로딩 규칙

  • 함수의 이름은 동일해야 한다.
  • 매개변수 타입 또는 개수가 달라야 한다. 매개변수의 이름은 오버로딩에 영향을 주지 않는다.
  • 함수의 반환 타입은 오버로딩에 영향을 주지 않는다. 다만, 매개변수의 타입과 개수가 동일한 함수는 반환 타입이 다르면 안된다. 컴파일러가 어떤 함수를 호출해야 하는지 알 수 없기 때문이다.
// 함수 오버로딩을 사용하지 않은 경우 // 같은 동작을 하는 함수이지만, 매개변수의 타입/개수에 따라 다른 이름을 가진다. fun calcInt(a:Int, b:Int):Int fun calcDouble(a:Double, b:Double):Double fun calcFloat(a:Float, b:Float): Float fun calcThreeInt(a:Int, b:Int, c:Int)
// 함수 오버로딩을 사용하는 경우 // 같은 동작을 하는 함수가 같은 이름을 가진다. fun calc(a:Int, b:Int):Int // fun calc(a:Int, b:Int):IDouble 반환 타입만 다른 함수 오버로딩 X fun calc(a:Double, b:Double):Double fun calc(a:Float, b:Float): Float fun calc(a:Int, b:Int, c:Int):Int
 

오버라이딩(overriding)이란?

상속에서 쓰이는 개념으로, 부모 클래스의 함수를 자식 클래스에서 재정의하여 사용하는 것을 말한다. 자식 클래스의 함수에서 부모 클래스의 함수와 다른 동작을 수행하고 싶은 경우 사용합니다. 부모 클래스 타입의 참조 변수에서 함수를 호출했을 때, 자식 클래스에서 오버라이딩한 함수가 호출됩니다.
// 부모 클래스 open class Guitar(){ open fun play() = println("나는 기타다.") } // 자식 클래스 class ElectricGuitar():Guitar(){ // 부모 클래스의 함수 play()를 오버라이딩 override fun play() = println("나는 일렉 기타다~") } fun main() { // 자식 클래스 인스턴스를 담은 부모 클래스 타입의 변수 val guitar: Guitar = ElectricGuitar() // play() 함수 호출 시 // 부모 클래스의 play()가 아닌 오버라이딩한 자식 클래스의 play() 호출됨 guitar.play() // 출력 값: 나는 일렉 기타다~ }
 
 

내일배움캠프는 개발에 필요한 핵심만 배웁니다

지금까지 꼭 필요한 개발 지식에 대해 알아보았습니다. 내일배움캠프에서는 전문가들이 선별한 핵심 개발 지식으로 개발 공부도, 취업도 보다 효율적으로 할 수 있는데요. 국내 유수의 IT기업 출신 튜터님들과 실습 위주의 독보적인 커리큘럼으로 개발자 취업을 체계적으로 준비해보세요. 내일배움캠프 4개월, 여러분 인생의 가장 큰 터닝 포인트입니다.
 
 
 
CREDIT
글 | 이선주 내일배움캠프 수료생 편집 | 정효재 팀스파르타 에디터
 
 

취업 준비, 어디서부터 시작해야 할지 모르겠다면?

 
🧐비전공자인데 IT 업계 취업할 수 있을까?
😟프로젝트 경험이 부족한데, 어떻게 준비해야 할까?
🥺IT 기업으로 이직하고 싶은데 뭐부터 시작해야 할까?
 
이런 고민을 하고 있다면, 내일배움캠프의 IT 취업 컨설팅을 받아보세요.
취업 코칭 전문가들이 여러분의 고민을 해결해 드립니다.
 
다음 링크에 이메일을 입력하시면 메일로 1:1 커리어 상담권과 취준 자료집을 보내드릴게요.
 
Share article
Subscribe to our newsletter
RSSPowered by inblog