상세 컨텐츠

본문 제목

[안드로이드 코틀린] 함수(function) 만드는 방법 part4 - 오버로딩(Overloading)

안드로이드

by aries574 2022. 5. 28. 13:30

본문


이번 시간에는 함수명이 같은 함수(Overloading) 만드는 방법에 대하여 알아보겠습니다.


목차

1. 실행 화면
2. 메인 화면 구성 activity_main.xml
3. 메인 코드 구현 MainActivity.java


1. 실행 화면


2. 메인 화면 구성 activity_main.xml

 - 설명 -

 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>

 


3. 메인 코드 구현 MainActivity.java

 

- 설명 -

 기능이 비슷해서 같은 함수명을 쓰고 

싶은 경우에 매개변수의 타입을 다르게

하거나 갯수를 다르게 하면 같은 이름을

사용할 수 있다. 오버로딩(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 화면 구성

 

[안드로이드] 커스텀 달력 만드는 방법 part1 화면 구성

이번 시간부터 커스텀 달력을 만들어 보겠습니다. 이번에는 메인화면 구성을 해보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구성 activity_main.xml 1. 실행 화면 2. 메인 화면 구성 activity_main.xml  -.

aries574.tistory.com

2022.03.28 - [안드로이드] - [안드로이드] 숫자 맞추기 게임 Up&Down 만드는 방법 part1 - 화면 구성

 

[안드로이드] 숫자 맞추기 게임 Up&Down 만드는 방법 part1 - 화면 구성

 이번 시간에는 랜덤한 숫자를 생성하면, 사용자는 숫자를 입력해서 맞추는 게임을 만들어 보려고 합니다. 물론 무작정 맞추는 게 아니라 입력한 숫자가 랜덤한 숫자보다 큰지, 작은지 정도는

aries574.tistory.com

2022.03.09 - [안드로이드] - [안드로이드] Firebase 시작하기 실시간 데이터베이스 Realtime Database (간단한 데이터 읽기, 쓰기) part1

 

[안드로이드] Firebase 시작하기 실시간 데이터베이스 Realtime Database (간단한 데이터 읽기, 쓰기) part

이번 시간에는 Firebase를 통해 데이터베이스에 간단한 데이터를 쓰고 읽는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 프로젝트 만들기 3. 앱 만들기 4. 데이터 베이스 만들기 5. 라이브러

aries574.tistory.com

 

 

반응형

관련글 더보기

댓글 영역