Archives
Recent Posts
«   2025/02   »
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
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[15일차 Kotlin] Any 본문

Computer/Kotlin

[15일차 Kotlin] Any

Wise-99 2023. 5. 17. 20:39

 

 

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT

 

 

 

📖 Any란?

  • Kotlin에서 사용하는 모든 클래스의 부모 클래스이다.
  • Kotlin은 클래스를 작성할 때 상속받지 않는다면 자동으로 Any 클래스를 상속받는다.
  • Any 클래스에는 모든 객체가 가지고 있어야할 메서드가 제공되고 있으며 이 메서드들을 Overriding 하여 각 클래스의 성격에 맞게 재 구현하여 사용할 수 있다.
  • 모든 클래스는 Any를 상속 받은 상태이기 때문에 모든 객체들은 Any 타입 변수에 담을 수 있다.

toString

  • 객체의 정보 문자열을 반환하기 위해 만드는 메서드
  • println 과 같은 출력문으로 출력하면 toString 메서드를 호출하고 이 메서드가 반환하는 문자열을 이용해 출력하게 된다.

equals

  • == 연산자를 사용하면 자동으로 호출되는 메서드
  • == 연산자 기준으로 좌측에 있는 변수를 통해 메서드를 호출하고 우측에 있는 객체가 매개변수로 들어온다.
  • 이 메서드가 반환하는 결과가 == 연산의 결과가 된다.

hashCode

  • object의 hash code value를 return 한다.

 

 

 

📖 예제 코드

fun main() {

    // Any 타입 변수에 담아준다.
    val a1:Any = TestClass1()
    val a2:Any = TestClass2()

    println(a1)
    println(a2)

    val t3 = TestClass3(100, 200)
    val str1 = t3.toString()
    
    println("str1 : $str1")
    println(t3)

    val t4 = TestClass3(1000, 2000)
    val t5 = TestClass3(100, 200)

    if(t3 == t4){
        println("t3과 t4는 같습니다")
    } else {
        println("t3과 t4는 다릅니다")
    }

    if(t3 == t5){
        println("t3과 t5는 같습니다")
    } else {
        println("t3과 t5는 다릅니다")
    }
}

class TestClass1
class TestClass2

class TestClass3(var a1:Int, var a2:Int) {

    // override fun toString(): String {
    //    return super.toString()
    // }

    // 객체의 변수 값이나 필요한 정보를 구해 출력하는 용도로 사용
    override fun toString(): String {
        println("a1 : $a1")
        println("a2 : $a2")

        return super.toString()
    }

    override fun equals(other: Any?): Boolean {
        if (other != null) {
            // 형 변환
            val temp = other as TestClass3

            if (this.a1 == temp.a1 && this.a2 == temp.a2) {
                return true
            } else {
                return false
            }
        }
        return false
    }
}

✔️코드 해석

  • TestClass3은 Any 클래스가 제공하는 메서드인 toString()과 equals()를 오버라이딩하여 구현했다.
  • toString()
    • 객체의 정보를 문자열로 반환하는 메서드
    • overriding하지 않으면 객체의 ID 값을 반환한다.
    • 예제 코드에서는 객체가 가지고 있는 멤버 변수와 ID 값이 출력된다.
  • equals()
    • 예제 코드에서는 other(t3)에 들어있는 값이 null이 아닐 때만 동작한다.
    • other를 TestClass3으로 형변환한다.
    • 객체의 맴버변수가 같으면 true를 반환하고, 다르면 false를 반환한다.

 

 

 

✔️ Console 출력 결과