본문 바로가기
Language/코틀린

[Kotlin] Fast campus 강의 안드로이드 앱 개발 (코틀린) data class, Object

by javapp 자바앱 2021. 10. 21.
728x90

 

data class

 

상속 불가, data 처리하기 위해 특화된 클래스data class 이름 () 안에 필드들을 정의할 수 있다.
{} 안에 멤버필드나 메소드를 정의할 수도 있다.
data 클래스도 멀티리턴처럼 보일 수 있다. (Destructuring Declarations)
가장 유용한 것은 copy() 함수

 

 

일반 클래스와 데이터 클래스 정의

class A
{
    var name  : String = "clas A"
    var power : Int  = 0
}

data class DataA(var name : String = "이름없음",var level : Int)
{
    var jop : String =""

    // 연산자 오버로딩에 data class 많이 사용
    operator fun plus (d : DataA){
        this.level + d.level
    }
}

 

 

 

 

 

 

snake , 3

 

 

 

 


DataA(name=AAA, level=3)
DataA(name=이름없음, level=21)

 

 


DataA(name=이름없음, level=3)
programmer

 

 

 

        DataA(name=카피이름, level=3)

 

 

 

        name: 카피이름

 

        카피이름, 3

 

 

 


 

 

Object

 

3가지 형태 사용
class 명 앞에 사용해서 static class 선언
class 내부의 특정멤버들만 static (companion object)
이름 없는 객체에 클래스 상속 받아서 특정 메소드 오버로드 받을 때

 

.

Kotlin

 

정의문

object SingleTon{
    var showMessage = {msg :String -> println(msg)}
}

class StaticTest
{
    var msg: String = "일반 객체로 생성하면 이 변수를 액세스 가능함"

    // companion object {} 안에서 구현해야 static 가능
    companion object{
        var staticVar = "StaticTest.staticVar"
        
        fun staticFunc() = println("StaticTest.staticFunc")
    }
}

abstract class fakeClickHandler{
    abstract fun onClick()
}

 

실행문

 fun main()
 {
    // 1. 클래스 전체를 싱글톤으로 사용할 때, static class
    Singleton.showMessage("싱글톤입니다.")

    val obj = StaticTest()
    println(obj.msg)
    println()

    // 2. companion object
    println(StaticTest.staticVar)
    StaticTest.staticFunc()

    // 3. Android에서 자주 사용
    // abstract 사용
    var clickObject = object : FakeClickHandler(){
        override fun onClick() {
            println("Click !")
        }
    }

    clickObject.onClick()
}

<실행결과>

싱글톤입니다.
일반 객체로 생성, 이 변수를 액세스 가능

StaticTest staticVar
StaticTest staticFunc
Click !

 

 

 

 

 

java

class StaticTest
{
    String msg = "일반 객체로 생성, 이 변수를 액세스 가능";

    static String staticVar = "StaticTest staticVar";

    public static void staticFunc(){
        System.out.println("StaticTest staticFunc");
    }
}
public class main {
    public static void main(String[] args) {
        System.out.println(StaticTest.staticVar);
        StaticTest.staticFunc();
    }
}

StaticTest staticVar
StaticTest staticFunc

 

 


 

java 의 static 대체

 

kotlin

companion object{
   var staticVar = "StaticTest staticVar"
   fun staticFunc() = println("StaticTest staticFunc")
}

 

java

static String staticVar = "StaticTest staticVar";

public static void staticFunc(){
	System.out.println("StaticTest staticFunc");
}

 

 

abstract 구현

abstract class FakeClickHandler{
    abstract fun onClick()
}

 

    var clickObject = object : FakeClickHandler(){
        override fun onClick() {
            println("Click !")
        }
    }

 

 

 

 

 

이상

data class, Object

 

 

 

fast campus - 올인원 패키지 : 안드로이드 앱 개발

댓글