티스토리 뷰
코틀린에서도 대부분의 언어에서 지원하는 overloading을 지원한다.
이것은 같은 스코프 안에서 같은 이름의 함수 또는 메소드를 여러 개 만들 수 있는 기능인데, 이름이 같더라도 parameter의 이름이나 갯수가 다르다면 다른 함수 또는 메소드로 인식하게 된다. (Java와 같음) 다만 parameter의 갯수는 같으면서 자료형의 name이 다르면 overloading을 할 수는 없다.
fun main(args: Array<String>) {
read(7)
read("감사합니다.")
}
fun read(x: Int) {
println("숫자 $x 입니다.")
}
fun read(x:String) {
println(x)
}
---
// 숫자 7 입니다.
// 감사합니다
출력값을 보면 들어가는 자료형에 따라 출력값이 바뀌는 것을 알 수 있다. 중요한 것은 함수의 parameter값의 이름이 같아야 한다. 위 코드가 작동하는 이유는 parameter x로 고정되어 있기 때문이다.
그렇다면 이제 parameter를 받아야하는 함수지만, 별다른 parameter가 없더라도 기본값으로 작동해야 한다면 어떻게 해야 할까? 이때는 당연히 default agrument를 사용한다.
fun main(args: Array<String>) {
deliveryItem("짬뽕") // 짬뽕 1개를 집에 전달하였습니다.
deliveryItem("책", 3) // 책 3개를 집에 전달하였습니다.
deliveryItem("노트북", 30, "학교") // 노트북 30개를 학교에 전달하였습니다.
}
fun deliveryItem(name: String, count: Int = 1, destination: String = "집") {
println("${name} ${count}개를 ${destination}에 전달하였습니다.")
}
parameter가 채워진 경우에는 입력 받은 parameter가 출력되지만 그렇지 않은 경우 default값으로 출력되는 것을 알 수 있다. 근데 만약에 count: Int = 1이건 변경하고 싶지 않다면 어떻게해야 할까? 그냥 parameter 이름을 사용하면된다. 순서 상관없이 가능하다. 아래와 같이 코드를 작성하면 된다.
fun main(args: Array<String>) {
deliveryItem("선물", destination = "친구집") // 선물 1개를 친구집에 전달하였습니다.
}
fun deliveryItem(name: String, count: Int = 1, destination: String = "집") {
println("${name} ${count}개를 ${destination}에 전달하였습니다.")
}
이번에는 같은 자료형을 개수에 상관없이 parameter로 받고 싶을 때 사용하는 variable number of arguments (vararg)를 사용해보자.
fun main(args: Array<String>) {
sum(1, 2, 3, 4)
}
fun sum(vararg numbers: Int) {
var sum = 0
for (number in numbers) {
sum += number
}
println(sum)
}
vararg은 개수가 정해지지 않은 parameter임으로 반드시 함수 parameter 중 맨 마지막에 사용해야 한다는 점을 잊지말자.
마지막으로 마치 연산자처럼 쓸 수 있는 infix 함수이다. 참고로 class 내부에서 infix 함수를 선엉할 때는 적용할 클래스가 자기 자신이므로 class 이름은 쓰지 않는다.
fun main(args: Array<String>) {
println(6 multiply 4)
// 6이 this에 해당하고
// 4가 x에 해당함
// 위와 같은 의미를 갖는 코드는 다음과 같음
println(6.multiply(4))
}
infix fun Int.multiply(x: Int): Int = this * x
'Android > Kotlin' 카테고리의 다른 글
[Kotlin] 중첩 클래스와 내부 클래스 (0) | 2021.12.14 |
---|---|
[Kotlin] null 값을 처리하는 방법과 변수의 동일성 체크 방법 (0) | 2021.12.08 |
[Kotlin] List (0) | 2021.12.08 |
[Kotlin] Generic (0) | 2021.12.07 |
[Kotlin] 클래스의 다형성 (0) | 2021.12.07 |
- Total
- Today
- Yesterday
- 보조생성자
- 카카오
- DP
- 기본생성자
- 코틀린
- 비전공싸피합격
- 안드로이드 #안드로이드스튜디오 #Kotlin #앱개발 #안드로이드기초 #비전공개발자 #풀스택개발자 #앱개발자
- 중첩클래스와 내부클래스
- 백준
- 백준 #숨박꼭질3 #다익스트라 #알고리즘 #비전공개발자 #풀스택 #웹개발 #앱개발 #안드로이드 #python
- Java
- 백준알고리즘 #BFS #델타이동 #알고리즘풀이 #개발 #안전영역 #풀스택개발자가되고싶습니다. #노력할래요 # 꾸준히 # 화이팅! #비전공개발자
- 비전공개발자
- 생성자
- 안드로이드
- 프로젝트구조
- Kotlin
- 프로그래머스
- 싸피5기
- kotlin문법
- 추가합격후기
- Python
- 앱개발
- Class
- Java #객체지향 #상속 #생성자 #개념 #비전공개발자 #FullStack을 #향해
- 일반파라미터
- 참조연산자
- 알고리즘
- Programmers #알고리즘 #Python #KAKAOINTERNSHIP #비전공개발자 #불량사용자
- 구간 합 구하기 4
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |