이번 시간에는 함수명이 같은 함수(Overloading) 만드는 방법에 대하여 알아보겠습니다.
- 설명 -
1. 결과값을 보여주는 TextView
2. 입력을 하기 위한 EditText
3. 결과값을 보여주게 하는 Button
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/inputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical">
<TextView
android:id="@+id/showText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:textSize="25sp"
android:textStyle="bold" />
<EditText
android:id="@+id/num1Edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25sp"
android:textStyle="bold"
android:inputType="number"
/>
<EditText
android:id="@+id/num2Edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25sp"
android:textStyle="bold"
android:inputType="number"
/>
</LinearLayout>
<Button
android:id="@+id/resultBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/inputLayout"
android:layout_centerHorizontal="true"
android:text="결과"
android:textSize="25sp" />
</RelativeLayout>
- 설명 -
기능이 비슷해서 같은 함수명을 쓰고
싶은 경우에 매개변수의 타입을 다르게
하거나 갯수를 다르게 하면 같은 이름을
사용할 수 있다. 오버로딩(Overloading)
이라고 한다.
예: 이름은 같지만 매개변수 타입과
개수가 다르다.
fun printMax(num1 : Int, num2 : Int)
fun printMax(num1 : Double, num2 : Double)
fun printMax(num1 : Int, num2 : Int, num3 : Int)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//초기화
var num1Edit : EditText = findViewById(R.id.num1Edit)
var num2Edit : EditText = findViewById(R.id.num2Edit)
var showText : TextView = findViewById(R.id.showText)
var resultBtn : Button = findViewById(R.id.resultBtn)
//버튼 클릭 이벤트
resultBtn.setOnClickListener {
//변수에 입력값 담기
var num1 = num1Edit.text.toString();
var num2 = num2Edit.text.toString();
//결과
var result1 = printMax(num1.toInt(), num2.toInt())
var result2 = printMax(num1.toDouble(), num2.toDouble())
var result3 = printMax(num1.toInt(), num2.toInt(), 30)
//초기화
showText.text = "";
//보여주기
showText.append("result1: $result1 \n")
showText.append("result2: $result2 \n")
showText.append("result3: $result3 \n")
}
}
//매개변수가 다르거나 , 갯수가 다르다면 함수 이름 같아도 됨(오버로딩)
fun printMax(num1 : Int, num2 : Int) = if(num1 > num2) num1 else num2
fun printMax(num1 : Double, num2 : Double) = if(num1 > num2) num1 else num2
fun printMax(num1 : Int, num2 : Int, num3 : Int) =
when{
//num1이 num2보다 크거나 같다, num1이 num3보다 크거나 같다면 num1 return
num1 >= num2 && num1 >= num3 -> num1
//num2이 num1보다 크거나 같다, num2이 num3보다 크거나 같다면 num2 return
num2 >= num1 && num2 >= num3 -> num2
//둘 다 아니면 num3 return
else -> num3
}
}
2022.04.19 - [안드로이드] - [안드로이드] 커스텀 달력 만드는 방법 part1 화면 구성
2022.03.28 - [안드로이드] - [안드로이드] 숫자 맞추기 게임 Up&Down 만드는 방법 part1 - 화면 구성
2022.03.09 - [안드로이드] - [안드로이드] Firebase 시작하기 실시간 데이터베이스 Realtime Database (간단한 데이터 읽기, 쓰기) part1
[안드로이드 코틀린] 함수(function) 만드는 방법 part6 - 가변 인자(vararg) & 스프레드 연산자(spread operator) (0) | 2022.05.30 |
---|---|
[안드로이드 코틀린] 함수(function) 만드는 방법 part5 - default & named (0) | 2022.05.29 |
[안드로이드 코틀린] 함수(function) 만드는 방법 part3 - 단일 표현식 (0) | 2022.05.27 |
[안드로이드 코틀린] 함수(function) 만드는 방법 part2 - 리턴(return) (0) | 2022.05.26 |
[안드로이드 코틀린] 함수(function) 만드는 방법 part1 - 매개변수(parameter) (0) | 2022.05.25 |
댓글 영역